如果我运行此代码,即使数据记录不存在于表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 ..
答案 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.
你可以用
$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!";
}