我有這樣的代碼,但奇怪的是它總是迴應出「是!」,即使在FLD2中沒有像'555'這樣的值,或者即使根本沒有FLD2。麻煩選擇從哪裏?
$testresult = mysqli_query($database, "SELECT * FROM imei359327039828680 WHERE FLD2 = '555'");
if ($testresult) { echo('yes!'); } else { echo('no!'); }
任何想法,謝謝!
我有這樣的代碼,但奇怪的是它總是迴應出「是!」,即使在FLD2中沒有像'555'這樣的值,或者即使根本沒有FLD2。麻煩選擇從哪裏?
$testresult = mysqli_query($database, "SELECT * FROM imei359327039828680 WHERE FLD2 = '555'");
if ($testresult) { echo('yes!'); } else { echo('no!'); }
任何想法,謝謝!
正如由ctshryock提到的,變量設置爲一個良好的SQL查詢的返回值將總是被當作爲布爾對象審查視爲真。
要測試是否返回任何數據,您可以使用mysql_num_rows()
PHP Documentation這將返回返回的行數。如果您的查詢不匹配任何行,則此函數應該返回,這將被視爲假的if()
條件。
$testresult = mysql_query("SELECT * FROM imei359327039828680 WHERE FLD2 = '555'");
if(!$testresult)
die('SQL Error'); # The SQL Query Failed for some reason
if(mysql_num_rows($testresult))
die('SQL Returned No Result'); # The SQL Query returned nothing
while($r = mysql_fetch_assoc($testresult)) {
# Process your returned rows here
}
mysqli_query
總是返回一個結果對象,除非查詢以某種方式失敗。如果查詢不返回任何行,您仍然會得到一個結果對象;它只是不會有任何行。
您正在測試$testresult
是否爲真,如果它們是預期的查詢結果,則不是。如果查詢有效,即格式正確,它將返回一個有效的對象。你想看看$testresult
的返回值,看看你是否找到了一些東西。
THNAKS,現在它工作! $ testresult = mysqli_query($ database,「SELECT * FROM imei359327039828680 WHERE FLD2 ='555'」); $ testrow = mysqli_fetch_array($ testresult); if($ testrow){echo('yes!'); } else {echo('no!'); } – 2010-05-28 15:48:46