【问题标题】:MySQL SELECT statement doesn't stop when no rows are found未找到任何行时,MySQL SELECT 语句不会停止
【发布时间】:2011-07-04 22:13:26
【问题描述】:

我希望这个 MySQL 查询在它在表中找不到匹配的 ID 时会崩溃:

mysql_query("SELECT * FROM table WHERE id='1' LIMIT 1") OR die("Boom!");

它没有。它只是继续处理而没有错误。

我在这里错过了什么?

【问题讨论】:

  • SELECT ... FROM ... WHERE Condition 的意思是“给我所有满足Condition 的行” - 其中“没有满足Condition 的行”是一个完全有效的答案,而不是错误。
  • 也许尝试将 id='1' 更改为 id=1?

标签: php mysql


【解决方案1】:

如果没有找到任何行,则 select 语句不会失败 - 它只是返回一个空的结果集。

您可以检查mysql_num_rows 以查看是否找到任何行。

【讨论】:

    【解决方案2】:

    sql 语句没有失败,它实际上什么也不返回。 看这里How does "do something OR DIE()" work in PHP?

    【讨论】:

    • 谢谢 - 正是我想知道的。
    【解决方案3】:

    只有当您在其中出现语法或逻辑错误时,查询才会“失败”。

    不返回任何行的查询仍然是有效查询。检查它返回的结果集以查看您获得了多少结果:在您的情况下,检查是否存在“0”。

    【讨论】:

      【解决方案4】:

      使用mysql command line client 从命令行运行查询以确保表没有损坏。

      【讨论】:

      • 这与问题无关。他并不奇怪为什么没有返回任何行,他期待mysql_query 在这种情况下返回false。但它不应该,它只在出现错误时返回 false(例如查询中的语法错误或连接到服务器的问题)。
      猜你喜欢
      • 1970-01-01
      • 2012-08-23
      • 2016-08-22
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      相关资源
      最近更新 更多