2010-05-28 124 views
0

我有這樣的代碼,但奇怪的是它總是迴應出「是!」,即使在FLD2中沒有像'555'這樣的值,或者即使根本沒有FLD2。麻煩選擇從哪裏?

$testresult = mysqli_query($database, "SELECT * FROM imei359327039828680 WHERE FLD2 = '555'"); 

if ($testresult) { echo('yes!'); } else { echo('no!'); } 

任何想法,謝謝!

回答

1

正如由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 
} 
1

mysqli_query總是返回一個結果對象,除非查詢以某種方式失敗。如果查詢不返回任何行,您仍然會得到一個結果對象;它只是不會有任何行。

+0

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

1

您正在測試$testresult是否爲真,如果它們是預期的查詢結果,則不是。如果查詢有效,即格式正確,它將返回一個有效的對象。你想看看$testresult的返回值,看看你是否找到了一些東西。