orlupo פורסם 2005 בדצמבר 26 Share פורסם 2005 בדצמבר 26 הקוד הבא אמור לקחת את המחרוזת 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מישהו יכול לעזור לי לפתור את הבעיה הזו?בתודה מראש קישור לתוכן שתף באתרים אחרים More sharing options...
icebreak פורסם 2005 בדצמבר 26 Share פורסם 2005 בדצמבר 26 נראה כאילו ה MYSQL_QUERY מחזיר FALSE בגלל שגיאה בשאילתה ועל כן הוא לא יודע מה לעשות עם הערך המוחזר. קישור לתוכן שתף באתרים אחרים More sharing options...
orlupo פורסם 2005 בדצמבר 26 מחבר Share פורסם 2005 בדצמבר 26 הקוד הבא כן עבד לי עם אותו מסד נתונים:<?$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>";}?> קישור לתוכן שתף באתרים אחרים More sharing options...
icebreak פורסם 2005 בדצמבר 26 Share פורסם 2005 בדצמבר 26 כמו שאמרתי, כנראה שה QUERY שנתת לו לא תקין (מבחינת סינטקס או תוכן) בחלק הראשון ובגלל זה הוא מחזיר FALSE. תריץ http://il.php.net/mysql_error אחרי כן כדי לראות מה השגיאה שה SQL נותן על השאילתה, אחרי ה MYSQL_QUERY. נ.ב. כל הכבוד על העריכה קישור לתוכן שתף באתרים אחרים More sharing options...
orlupo פורסם 2005 בדצמבר 26 מחבר Share פורסם 2005 בדצמבר 26 טוב, עשיתי והוא החזיר לי את השגיאה:No database selectedמזה יכול להיות? :-Xהרי נבחר מסד נתונים... :'( קישור לתוכן שתף באתרים אחרים More sharing options...
icebreak פורסם 2005 בדצמבר 26 Share פורסם 2005 בדצמבר 26 אתה צריך להגדיר את היוזר/ססמא וכל שאר הירקות ב MYSQL_CONNECTומה זה ה TEMP הזה שאתה מעביר ב MYSQL_SELECT_DB ? אולי אתה מתכוון $TEMP או משהו? קישור לתוכן שתף באתרים אחרים More sharing options...
orlupo פורסם 2005 בדצמבר 26 מחבר Share פורסם 2005 בדצמבר 26 השם משתמש והסיסמא מועברים אבל ללא מרכאות אני ינסה עם.וה-lupo_temp זה השם של המסד נתונים. קישור לתוכן שתף באתרים אחרים More sharing options...
icebreak פורסם 2005 בדצמבר 26 Share פורסם 2005 בדצמבר 26 אז זה צריך לעבור במרכאות לא ? (כמו שכל ה STRINGS צריכים) קישור לתוכן שתף באתרים אחרים More sharing options...
orlupo פורסם 2005 בדצמבר 26 מחבר Share פורסם 2005 בדצמבר 26 ממ בדקתי בPHP.NET וצריך לעבור במרכאות גם השם משתמש, גם הסיסמא וגם שם מסד הנתונים.תיקנתי את זה וגם לא עזר, עדיין אותה שגיאה. קישור לתוכן שתף באתרים אחרים More sharing options...
icebreak פורסם 2005 בדצמבר 26 Share פורסם 2005 בדצמבר 26 צריך שהכל יהיה במרכאות (כל המחרוזות), גם ה TEMP ו LUPO_TEMP ומה לא שאתה מעביר... קישור לתוכן שתף באתרים אחרים More sharing options...
Milford Cubicle פורסם 2005 בדצמבר 26 Share פורסם 2005 בדצמבר 26 אני לא מבין למה אתה מצפה ש-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 בעמוד.. קישור לתוכן שתף באתרים אחרים More sharing options...
icebreak פורסם 2005 בדצמבר 26 Share פורסם 2005 בדצמבר 26 ד"א לעבודה שפויה מול מסדי נתונים, ממליץ על DB_DataObjecthttp://pear.php.net/package/DB_DataObjecthttp://pear.php.net/manual/en/package.database.db-dataobject.phpפשוט הרבה יותר קל/נוח לעבוד עם אוביקטיים מסוג שדות בטבלה (כמובן שזה הכל תלוי בשימושים ובדרישות ומגבלות של המערכת). קישור לתוכן שתף באתרים אחרים More sharing options...
orlupo פורסם 2005 בדצמבר 26 מחבר Share פורסם 2005 בדצמבר 26 עמרי, אני לא מבין אותך. אתה עשית אותו הדבר כמו שכבר עשיתי רק עם פונקציות, כמו כאן שזה עבד:http://hwzone.co.il/community/index.php?topic=159020.msg1341971#msg1341971 קישור לתוכן שתף באתרים אחרים More sharing options...
Milford Cubicle פורסם 2005 בדצמבר 26 Share פורסם 2005 בדצמבר 26 כן, עכשיו בדיוק באתי לכתוב על זה.. עכשיו שמתי לב שאתה לא מצפה מ-$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.. נ.ב. מצטער על הטעויות השטותיות ומיליון העריכות.. אני כבר לא מתפקד בשעות כאלה אחרי שאני חוזר מהעבודה.. קישור לתוכן שתף באתרים אחרים More sharing options...
orlupo פורסם 2005 בדצמבר 26 מחבר Share פורסם 2005 בדצמבר 26 אני חושב שבמצב כזה הוא לא יגיב למחרוזת כמו 'abcd' (אם abc הוא הערך שנשלח). קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.