我有这段代码,但奇怪的是它总是回答“是的!”,即使在FLD2中没有“555”这样的值,或者即使根本没有FLD2。
$testresult = mysqli_query($database, "SELECT * FROM imei359327039828680 WHERE FLD2 = '555'");
if ( $testresult ) { echo('yes!'); } else { echo('no!'); }
任何想法,谢谢!
答案 0 :(得分:1)
mysqli_query
始终返回结果对象。如果查询只是没有返回任何行,你仍然会得到一个结果对象;它就不会有任何行。
答案 1 :(得分:1)
您正在测试$testresult
是否为真,而不是它们是否是查询的预期结果。如果查询有效,即格式良好,则它将返回有效对象。您想查看$testresult
返回值以查看是否找到了某些内容。
答案 2 :(得分:1)
正如 ctshryock 所提到的,当被视为布尔对象时,设置为格式正确的SQL查询的返回值的变量将始终被视为 true 。
要测试是否返回了任何数据,您可以使用mysql_num_rows()
PHP Documentation来返回返回的行数。如果您的查询与任何行都不匹配,则此函数应返回 0 ,这将被if()
条件视为 false 。
$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
}