簡體   English   中英

MySQL查詢返回空集時該怎么辦?

[英]What to do when MySQL query returns empty set?

我剛剛開始學習PHP和MySQL。 我現在正在為課程注冊做一個小型項目。 我使用表coursetbl來存儲課程信息,例如代碼,名稱,配額。 當用戶填寫申請表時,我將首先檢查他/她是否填寫了有效的課程代碼,

$coursevalid=mysql_query("select * from coursetbl where courseno = '$_POST[courseno]'"); $cvalid = mysql_num_rows($coursevalid); if ($cvalid=1) {echo "Course number validated.<br />";} else {die( "Invalid course code.");}

輸入代碼有效時,一切正常。 但是,如果不是,則$coursevalid存儲一個“空集”,這使我感到好奇。 空集的數據類型是什么? 可以在邏輯子句中使用它嗎,例如if($coursevalid = '') {...}嗎? 我用google搜索mysql空集,但沒有找到滿意的解釋。 希望有人可以詳細解釋這件事是如何工作的。 謝謝。

mysql_query()返回的資源可用於返回各種信息,包括查詢可能找到的任何數據。 您無法將資源的值與任何值進行比較-它只是PHP函數使用的內部標識符。 在這種情況下,沒有“空集”的概念。

您可以通過兩種方法進行檢查。 您已經在查看mysql_num_rows()來檢查返回的項目數。 您可以通過在其中查找零來檢查“空集”。

另外,您可以簡單地使用mysql_fetch_array()或類似方法從集合中檢索行,直到函數返回false為止,此時不再有要檢索的行。

注意:不建議使用mysql_*()函數。 您不應該將它們用於新代碼。 改用mysqli_*()PDO

另請注意 ,您並沒有轉義$_POST['courseno']變量。 這是SQL注入的主要目標。 至少在提交查詢之前,應在其上使用mysql_real_escape_string() ,但實際上應考慮使用准備好的語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM