繁体   English   中英

当mysql_query返回false时

[英]When mysql_query returns false

除了编写错误的查询并且没有访问表的权限之外,当mysql_query返回false时? 还有其他情况吗?

请参阅参考指南:

对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句,mysql_query()成功时返回资源,错误时返回FALSE。

对于其他类型的SQL语句,例如INSERT,UPDATE,DELETE,DROP等,mysql_query()成功返回TRUE,错误返回FALSE。

返回的结果资源应传递到mysql_fetch_array()和其他用于处理结果表的函数,以访问返回的数据。

使用mysql_num_rows()来查找为SELECT语句返回的行数,或者使用mysql_affected_rows()来查找受DELETE,INSERT,REPLACE或UPDATE语句影响的行数。

如果用户无权访问查询所引用的表,mysql_query()也将失败并返回FALSE。

http://php.net/manual/zh/function.mysql-query.php

编辑:澄清那些错误实际上是什么。

因此,我们列出了可以返回false的事物:

  • 当返回结果集的MySQL语句出现错误时
  • 当不返回任何内容的MySQL语句出现错误
  • 当用户没有MySQL权限来访问表引用时

在我看来,前两个是有点分散的。 有哪些可能的错误? 从MySQL可以得到59种不同的客户端错误。 这些是更多与系统相关的错误,我们可以假定php将处理该错误,并且可能将其包装成更少量的抽象错误。

除了这些客户端错误外,您还会遇到一系列使用中可能遇到的抽象错误,这些错误与在应用程序内部使用实际API而不是对MySQL服务器的原始访问有关。 那些是:

  • 拒绝访问
  • 无法连接到[本地] MySQL服务器
  • 失去与MySQL服务器的连接
  • 客户端不支持身份验证协议
  • 交互输入密码失败
  • 主机“ host_name”被阻止
  • 太多联系
  • 记不清
  • MySQL服务器不见了
  • 封包太大
  • 通讯错误和连接中断
  • 桌子满了
  • 无法创建/写入文件
  • 命令不同步
  • 忽略用户
  • 表'tbl_name'不存在
  • 无法初始化字符集
  • 表损坏问题
  • 语法相关问题

以下是我刚才所说的内容:

感谢您的评论。
我相信绝对没有必要深入研究这些细节。

您真正需要的是一条错误消息,您可以阅读该错误消息,从而了解特定的问题。

因此,似乎mysql_error()函数确实是您想要的。

$res = mysql_query($sql) or trigger_error(mysql_error()." in ".$sql);

看起来足够了。

不幸的是,当涉及到什么可能的触发错误的方法时,参考指南不是很具体。 除了语法上无效的语句并且没有权限外,超出创建新语句的限制也是可能的错误,如果您遇到高负载,则可能会弹出该错误。

如果查询正确编写但没有影响行,则UPDATE查询将返回false,例如:

UPDATE `table` SET `id`=1 WHERE `id`=1

我遇到此错误,mysql_error()返回“ MySQL服务器已消失”。 我的查询是一个非常简单的查询,它从一个很小的表中选择*。 当我更改“选择*”以选择两列时,我希望它可以解决问题。 “ Select *”是我知道的惰性编码,但我从未梦想过它会导致查询根本无法运行!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM