בעיה קטנה בשאילת SQL

patael

New member
בעיה קטנה בשאילת SQL

אני מנסה לבנות שאילתה אחת שתייצג כל מיני תנאים מהטופס.
mysql_connect("","",""); mysql_select_db("rma"); if($match) {print $matchCase='=';} else{print $matchCase='LIKE';} if($sqlField=='productNumber') {$query=mysql_query("select * from products where $sqlField $matchCase '%$productNumber%'")or die(mysql_error());} else{$query=mysql_query("select * from products where $sqlField $matchCase '%$productName%'")or die(mysql_error());} print ($query); while($row=mysql_fetch_array($query)) { print "* ". $row['id']." ".$row['productNumber']." ".$row['productName']; } print(mysql_num_rows($query));​
הבעיה היא שאני רוצה להוציא נתונים מה DB שהתנאי הוא LIKE ולא = . מדוע זה לא עובד כאשר משתמשים במשתנים? או שפשוט יש לי בעיה בקוד. תודה רבה
 

N i X

New member
לא אמורה להיות בעיה עם משתנים

והקוד גם ניראה בסדר... יש איזה שגיאה מPHP או mysql? והאם אתה בטוח ש$math לא מקבל ערך מאיפהשהו?
 

patael

New member
אין שום שגיאה

הMATCH מקבל או = או LIKE כמו שאתה רואה אני מנסה לבצע חיפוש על ה DB שהערך המתקבל יהיה דומה ולא שווה. אתה יכול לנסות את הקוד אצלך? זה ממש יעזור לי. אין שגיאה, כשהערך ב MATCH הוא LIKE הוא פשוט לא מוצא את הערך בDB, שלדעתי חייב להימצא. תודה רבה על העזרה.
 

N i X

New member
לא ממש עזרתי...

השאלה שלי הייתה בקשר ל:
if($match) {print $matchCase='=';} else{print $matchCase='LIKE';}​
התנאי הזה בעצם שואל, האם יש ערך ל$math ? אם כן, תעשה ש $mathCase יהיה שווה, אם לא, תעשה ש $mathCase יהיה Like. אז מאיפה הערך ההתחלתי של $math ?
 

N i X

New member
אני יכול לנסות את הקוד, אבל מה זה

יעזור? הרי אין לי את הDB שלך...
 

N i X

New member
תעשה ככה:

(בשביל לנסות למצוא את השגיאה)
error_reporting (E_ALL);​
(שזה שטויות, ולא ממש יעזור, אבל אולי...) תוסיף, בכל שורה שאתה עושה mysql_query, תעשה גם print לquery, כלומר:
{ {$query=mysql_query("select * from products where $sqlField matchCase '%$productNumber%'")or die(mysql_error()); print("select * from products where $sqlField matchCase '%$productNumber%'"); }​
ואולי ככה תצליח לעלות על הבעיה...
 

gunfor

New member
לדעתי

if($match) {print $matchCase='=';} else{print $matchCase='LIKE';} לדעתי נדקלתי בזה הרבה שלפעמיים הגדרה של המשתנה מאיזה טופס לא עוברת וזה דופק את הכל הבניה תדוק אם בכלל מגיע נתון ל $match לדעתי הדרך הכי טוב אולי קצת מאריכה זה לעשות אם $_POST , $_GET כי אז זה בטוח ב 90% שמגיע הנותן למשתנה זה דעתי בכול אופן אבל הבעיה היא ב משצתנה הזה לא מגיע אליו שום נתון
 
למעלה