有人告诉我,我可以检查SELECT语句是否找到一个语法为
的列$rows = query( "SELECT * FROM tbl WHERE id = idx");
if ( $rows == false )
它似乎有效。
无论如何,如果我检查if ( $rows == 0 )
它不会返回相同的值。
0
和false
不应该相同(当然除了类型)?
查询没有找到行时返回的实际值是多少?我问,因为它似乎不是假的,因为语句var_dump( $rows === false )
打印false
..
***编辑:我很抱歉,查询()是一个来自其他人写的库的函数,我不知道(我现在开始用sql ...)。它只是执行一个SQL语句,返回结果集中所有行的数组或返回(非致命)错误(如未找到行)。
但是,我还有一个小问题。 该函数在找不到行时返回false,所以我不能用if ( $rows === false )
来捕获它吗?
为什么var_dump(false)
不会打印出任何内容,而var_dump(true)
会将我打印出来1
?
答案 0 :(得分:1)
我不确定你是否使用简单的mysql_*
函数,MySQLi或PDO,但在任何情况下$rows
都没有返回结果行的数量。它是根据查询成功返回/创建的布尔值/对象。
$sql = $mysqli->query("SELECT * FROM tbl WHERE id='1'");
if(!$sql->error)
$number_of_rows = $sql->num_rows; // for sure it will output 1