0

有人告诉我,我可以检查 SELECT 语句是否找到具有以下语法的列

$rows = query( "SELECT * FROM tbl WHERE id = idx");
if ( $rows == false )

它似乎工作。

无论如何,如果我检查if ( $rows == 0 )它不会返回相同的值。

不应该0false相同(当然除了类型)?

当查询没有找到行时,查询返回的实际值是多少?我问是因为它似乎不是假的,因为声明var_dump( $rows === false ) 打印了false..

***编辑:对不起,伙计们,query() 是其他人编写的库中的一个函数,我不知道(我现在从 sql 开始......)。它只是执行一条 SQL 语句,返回结果集中所有行的数组,或者在(非致命)错误(如未找到行)时返回 false。

不过,我还有一个小问题。该函数在找不到任何行时返回 false,所以我不应该能够用 捕捉它if ( $rows === false )吗?

为什么var_dump(false)不打印出任何东西,而var_dump(true)打印出我1

4

1 回答 1

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
于 2013-04-02T12:10:27.493 回答