2010-05-28 90 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的返回值,看看你是否找到了一些东西。