【问题标题】:SELECT ... INTO Understanding its behaviorSELECT ... INTO 了解其行为
【发布时间】:2013-03-23 17:13:24
【问题描述】:

有人告诉我,我可以检查 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

【问题讨论】:

  • 你的意思是mysql_query()而不是query()
  • 您确定不想关闭字符串吗?

标签: mysql sql phpmyadmin


【解决方案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

【讨论】:

    猜你喜欢
    • 2014-07-26
    • 2014-11-27
    • 2012-01-23
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 2013-06-21
    • 2018-03-02
    • 2014-07-17
    相关资源
    最近更新 更多