פורסם 2005 בדצמבר 2619 שנים הקוד הבא אמור לקחת את המחרוזת str שנשלחה ע"י טופס ב-HTML ולחפש אותה במסד נתונים:<?define("link","\n\n<a href='search.html'>Click here to return to search page.</a>"); $str = trim($str);if(!$str){ echo "There isn't a match result.".link; exit;}$db = mysql_connect("localhost");mysql_select_db(temp, $db);$query = "SELECT * FROM phonebook WHERE str LIKE '%str' OR 'str%'";$result = mysql_query($query, $db);while($print = mysql_fetch_row($result)) for($i=0;$i<count($print);$i++) echo "$print[$i]\n";?>משום מה השרת מחזיר את השגיאה:Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource on line 26מישהו יכול לעזור לי לפתור את הבעיה הזו?בתודה מראש
פורסם 2005 בדצמבר 2619 שנים נראה כאילו ה MYSQL_QUERY מחזיר FALSE בגלל שגיאה בשאילתה ועל כן הוא לא יודע מה לעשות עם הערך המוחזר.
פורסם 2005 בדצמבר 2619 שנים מחבר הקוד הבא כן עבד לי עם אותו מסד נתונים:<?$db = mysql_connect ("localhost");mysql_select_db (lupo_temp,$db);$query = "SELECT * FROM phonebook";$result = mysql_query($query);$j=1;while($temp = mysql_fetch_assoc($result)){ echo ($j++)."<br>"; while($print = each($temp)) echo "$print[key]: $print[value]<br>"; echo "<br>";}?>
פורסם 2005 בדצמבר 2619 שנים כמו שאמרתי, כנראה שה QUERY שנתת לו לא תקין (מבחינת סינטקס או תוכן) בחלק הראשון ובגלל זה הוא מחזיר FALSE. תריץ http://il.php.net/mysql_error אחרי כן כדי לראות מה השגיאה שה SQL נותן על השאילתה, אחרי ה MYSQL_QUERY. נ.ב. כל הכבוד על העריכה
פורסם 2005 בדצמבר 2619 שנים מחבר טוב, עשיתי והוא החזיר לי את השגיאה:No database selectedמזה יכול להיות? :-Xהרי נבחר מסד נתונים... :'(
פורסם 2005 בדצמבר 2619 שנים אתה צריך להגדיר את היוזר/ססמא וכל שאר הירקות ב MYSQL_CONNECTומה זה ה TEMP הזה שאתה מעביר ב MYSQL_SELECT_DB ? אולי אתה מתכוון $TEMP או משהו?
פורסם 2005 בדצמבר 2619 שנים מחבר השם משתמש והסיסמא מועברים אבל ללא מרכאות אני ינסה עם.וה-lupo_temp זה השם של המסד נתונים.
פורסם 2005 בדצמבר 2619 שנים מחבר ממ בדקתי בPHP.NET וצריך לעבור במרכאות גם השם משתמש, גם הסיסמא וגם שם מסד הנתונים.תיקנתי את זה וגם לא עזר, עדיין אותה שגיאה.
פורסם 2005 בדצמבר 2619 שנים צריך שהכל יהיה במרכאות (כל המחרוזות), גם ה TEMP ו LUPO_TEMP ומה לא שאתה מעביר...
פורסם 2005 בדצמבר 2619 שנים אני לא מבין למה אתה מצפה ש-mysql_connect יחזיר לך את הדטאבייס... הקוד שלך פשוט לא נכון, mysql_connect מחזיר סתם handler בשביל שתוכל לעשות לו mysql_close אח"כ אם בא לך.. אתה תמשיך לקבל שגיאת no database selected עד שתגדיר אחד.. הנה שתי פונקציות בסיסיות שלי לעבודה מול MySQL: function db_connect() { global $DBhost,$DBuser,$DBpass,$DBname; mysql_connect($DBhost,$DBuser,$DBpass) or die("Unable to connect to database"); mysql_select_db($DBname) or die("Unable to connect to database"); }function db_query($sql_query) { $result = mysql_query($sql_query) or die("Invalid query: " . mysql_error() . "<br>Query: " . $sql_query); return $result; } עכשיו זה מאוד פשוט להשתמש בזה. פשוט תגדיר קודם כל את כל המשתנים הגלובלים, ואז תשתמש ב- db_connect() בתחילת התוכנית, וב- db_query($sql_query) בכל query שאתה רוצה לבצע.. אפשר להוסיף ל-db_query גם קאונטר (משתנה גלובלי מן הסתם) שיספור את מספר ה-queries בעמוד..
פורסם 2005 בדצמבר 2619 שנים ד"א לעבודה שפויה מול מסדי נתונים, ממליץ על DB_DataObjecthttp://pear.php.net/package/DB_DataObjecthttp://pear.php.net/manual/en/package.database.db-dataobject.phpפשוט הרבה יותר קל/נוח לעבוד עם אוביקטיים מסוג שדות בטבלה (כמובן שזה הכל תלוי בשימושים ובדרישות ומגבלות של המערכת).
פורסם 2005 בדצמבר 2619 שנים מחבר עמרי, אני לא מבין אותך. אתה עשית אותו הדבר כמו שכבר עשיתי רק עם פונקציות, כמו כאן שזה עבד:http://hwzone.co.il/community/index.php?topic=159020.msg1341971#msg1341971
פורסם 2005 בדצמבר 2619 שנים כן, עכשיו בדיוק באתי לכתוב על זה.. עכשיו שמתי לב שאתה לא מצפה מ-$db להיות הדטאבייס, אלא מ-temp.. לא שמתי לב לזה קודם כי לא שמת את זה במרכאות (גרוע מאוד..). דרך אגב, למה אתה עושה: LIKE '%str' OR 'str%' ??? מה רע ב: LIKE '%str%' ? אה, ה-query שלך לא משתמש בכלל במשתנה! זה $str, לא str.... תעשה: $query = "SELECT * FROM phonebook WHERE str LIKE '%" . $str . "%'"; ותוסיף אחרי ה-mysql_query: if (!$result) { die('Invalid query: ' . mysql_error());} הרי מה שאתה מקבל זאת לא שגיאה, זאת אזהרה. לדעתי בגלל ש-$results החזיר FALSE (הרי הוא לא מצא "str", שזה כאמור היה אצלך בתור סטרינג ולא בתור משתנה) ו-mysql_fetch_row לא ידע להתמודד עם זה (כלומר, ידע, אבל פלט אזהרה). בקוד השני שנתת זה כמובן עבד כי ה-query היה ללא שום where.. נ.ב. מצטער על הטעויות השטותיות ומיליון העריכות.. אני כבר לא מתפקד בשעות כאלה אחרי שאני חוזר מהעבודה..
פורסם 2005 בדצמבר 2619 שנים מחבר אני חושב שבמצב כזה הוא לא יגיב למחרוזת כמו 'abcd' (אם abc הוא הערך שנשלח).
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.