有人告诉我,我可以检查SELECT语句是否使用以下语法找到列
$rows = query( "SELECT * FROM tbl WHERE id = idx");
if ( $rows == false )
而且它似乎起作用了。
无论如何,如果我检查if ( $rows == 0 )
,它不会返回相同的值。
0
和false
不应该是相同的吗(当然,除了类型之外)?
当查询没有找到行时,它返回的实际值是多少?我之所以这样问,是因为它看起来不是假的,因为var_dump( $rows === false )
语句打印了false
。
*编辑:对不起,伙计们,query()是别人写的库中的一个函数,我不知道(我现在从sql开始...)。它只是执行一条SQL语句,返回一个包含结果集中所有行的数组,如果出现(非致命)错误(如row not found),则返回false。
不过,我还有一个小问题。函数在没有找到行时返回false,所以我不应该用if ( $rows === false )
捕获它吗
为什么var_dump(false)
不给我打印任何东西,而var_dump(true)
给我打印1
发布于 2013-04-02 12:10:27
我不太确定您是否使用简单的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
https://stackoverflow.com/questions/15763607
复制