[英]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可以得到59种不同的客户端错误。 这些是更多与系统相关的错误,我们可以假定php将处理该错误,并且可能将其包装成更少量的抽象错误。
除了这些客户端错误外,您还会遇到一系列使用中可能遇到的抽象错误,这些错误与在应用程序内部使用实际API而不是对MySQL服务器的原始访问有关。 那些是:
以下是我刚才所说的内容:
感谢您的评论。
我相信绝对没有必要深入研究这些细节。
您真正需要的是一条错误消息,您可以阅读该错误消息,从而了解特定的问题。
因此,似乎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.