26-09-2011, 18:04
|
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
|
|
חבר מתאריך: 25.10.01
הודעות: 42,775
|
|
שאין תוצאות, לא חוזר Warning, חוזר 0, וזה שקט. הדרך היחידה שבה תחזור אזהרה מהפונקציה הזו, היא אם השאילתא נכשלה, כלומר, תקלה בחיבור ל DB, בעיית הרשאות, בעייה בביצוע השאילתא ברמת ה DB (דיסק מלא, timeout, ומה לא...), או שגיאת תחביר בשאילתא, ולא שאילתא ללא תוצאות.
אם זה לא היה מובן עד עכשיו, אם הצלחת להגיע למצב שבו אתה מגיע לשורת הקוד הזאת ומקבל את האזהרה הזאת, משהו מאוד דפוק אצלך: או שאין לך גישה בכלל ל DB (ואז מה כבר תראה באתר שלך, אם הוא אתר דינאמי) - או שיש לך שגיאת תחביר, ואז אתה... מה, מתעלם ממנה? אולי זו אפילו שגיאה שמסתירה בעיית אבטחה (SQL Injection)...
הדרך שבה אני עושה היא כזו:
קוד PHP:
$res = mysql_query("whatever") or DIE('DB query failed at line ' .__LINE__.', please check what is going on!');
אם לא איכפת לך שמי שצופה בשגיאה ידע גם מה בדיוק היה לא בסדר, תוכל לעשות במקום זאת כך:
קוד PHP:
$res = mysql_query("whatever") or DIE('DB query failed at line ' .__LINE__.', please check what is going on! MySQL said: '.mysql_error());
ואז זה בכלל לא יגיע לשורה השנייה ויציג אזהרה שם. אם אתה בכל זאת רוצה לעבוד לא נכון, אני גם אעזור לך, אחרי שהזהרתי מפני כך:
קוד PHP:
if ($result && !mysql_num_rows($result))
{ whatever }
יעשה לך את העבודה... מצד שני, אם המטרה שלך היא להעלים אזהרות חשובות, לא צריך להתאמץ יותר מדי... אתה תמיד יכול לשים בתחילת הקוד שלך: ולא תוצג לך אף הערה ואפילו שגיאה במהלך הריצה... אבל דעתי האישית היא שעדיף שהקוד שלך יהיה נכון מאשר מחביא בעיות.
|