PHP:MySQLi-Query不返回true或false?

时间:2014-07-04 10:28:18

标签: php sql mysqli

如果我运行此代码,即使数据记录不存在于表myDB中的数据库myTable中,if-clause也不会返回false。我不知道出了什么问题......

// MySQLi-Connection...

$result = $mysqli->query("SELECT * FROM `myDB`.`myTable` WHERE `itemtype` = 'comment' AND `itemID` = 3");
if ($result) {
echo "record found!";
} else {
echo "record not found!";
}

itemID = 3的记录不存在,但我的if子句表示$ result返回true ..

3 个答案:

答案 0 :(得分:4)

Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries
mysqli_query() will return a mysqli_result object. For other successful queries 
mysqli_query() will return TRUE. 


#Reference PHP Manual



你可以用

$result = $mysqli->query("YOUR QUERY")); 
if($result->num_rows){
 // Records Found
}else{
 // Empty Result
}

答案 1 :(得分:1)

在这里使用mysqli_num_rows非常符合逻辑:

$result = $mysqli->query("SELECT * FROM `myDB`.`myTable` WHERE `itemtype` = 'comment' AND `itemID` = 3");
if($result->num_rows > 0) {
    echo 'record found';
} else {
    echo 'query is ok but no results found';
}

你不能在你的if中放入一个mysqli_result对象,因为即使它产生0行,它仍然会被评估为TRUE。

答案 2 :(得分:0)

您的PHP if语句将评估为TRUE,因为空的mysql结果集并不意味着它是一个失败的查询。查询运行正常,mysql检索到0行,因此$ result的计算结果为true。

要检查是否已检索到有效行,请尝试:

if ( ! empty($result) ) { 
  echo "record found!";
} else {
  echo "record not found!";
}