麻烦选择FROM WHERE?

时间:2010-05-28 15:41:46

标签: php mysql

我有这段代码,但奇怪的是它总是回答“是的!”,即使在FLD2中没有“555”这样的值,或者即使根本没有FLD2。

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

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

任何想法,谢谢!

3 个答案:

答案 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
}