有时会出现mysql_query()无法插入数据,我不知道它。所以,问题是我怎么知道它何时发生?如果mysql_query()失败,该怎么办?
回答
你必须分析你的sql。你逃脱了你的参数吗?听起来像这可能是问题。你可能会粘贴你的SQL,所以我们可以帮助你。
用于显示错误,您可以例如。
$result = mysql_query($query) or die ("Error in query: $query. ".mysql_error());
。
虽然这是一个很好的答案,以确定是什么导致了失败,我不认为这是回答OP的要求。我认为OP想知道如何确定它何时失败,而不是可能导致失败的原因。 – 2010-03-10 04:44:37
好点chris – 2010-03-10 04:47:33
也许你可以在PHP中检查LAST_INSERT_ID()(mysql_insert_id())。假设你的表有auto_increment列。
如果mysql_insert_id()返回0,并且表中有一个auto_increment列,那么最后一个INSERT失败。但我更喜欢mysql_error。 – 2010-03-10 04:51:39
-1,如果插入失败,last_insert_id()将向您显示来自先前插入(可能是另一个)表中的插入编号。无论如何没有意义。 – Johan 2011-05-31 17:27:33
您可以使用mysql_error php.net/mysql_error来获得更好的解释,然后将其显示或记录到文件中。
引用的mysql_query
的文档页面:
对于
SELECT
,SHOW
,DESCRIBE
,EXPLAIN
等语句返回的结果集 ,mysql_query()
返回resource
成功,或FALSE
上 错误。对于其它类型的SQL语句,
INSERT
,UPDATE
,DELETE
,DROP
等,mysql_query()
回报TRUE
上 成功或FALSE
上的错误。
因此,要检测是否有一直错误或没有,你有你的调用的返回值进行测试,以mysql_query
:
$result = mysql_query('...');
if ($result === false) {
// And error has occured while executing
// the SQL query
}
那么,你该怎么办?
- 嗯,首先,你可以记录错误到一个文件,你可以稍后
- 对于除,你可以使用
mysql_error
和mysql_errno
分析。
- 对于除,你可以使用
- 还可以显示一个友好的错误消息的用户
- 即某种“哎呀,发生错误页”。
记住,虽然:用户并不需要知道(而不会明白)的技术错误信息 - 这样不显示它。
如果你的查询失败,你一定要使用mysql_error()。这并不总是可怕的帮助,特别是如果你有一个大的查询。但它可能会帮助您诊断问题的可能性。 – 2010-03-10 14:48:55
建议作出的请求mysql_query检测故障并记录查询加上mysql_error包装某处
如果您使用的是明智的客户端库,当一个SQL命令失败,它会抛出一个异常,你可以检查错误代码以编程方式知道该怎么做。
如果你没有代码处理特定的错误路径,你应该运行一个标准的错误处理程序,将错误,堆栈跟踪和其他一些调试信息记录到日志中。
如果错误的原因是死锁,您可能需要重试。
一张支票,我通常做的是像例如
$result = mysql_query($query);
if (!empty($error = mysql_error()))
{
echo 'Mysql error '. $error ."<br />\n";
}
else
{
// the query ran successfully
}
这是任何类型的查询
的一个很好的检查很好用,但是在生产中你不需要这么做,因为SQL注入的人群会知道如何更容易地利用你的弱点。 – Johan 2011-05-31 17:25:31
是的,你是对的。 – cleanunicorn 2011-07-18 13:53:37
您可以检查多少行MySQL已经插入/更新/删除者在插入/更新/删除查询后执行此查询。
SELECT ROW_COUNT() as rows_affected
如果这返回0
您的插入失败。如果它返回1
或更多,你已经成功。
请参阅:http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_row-count
- 1. 如果google.load失败,该怎么办?
- 2. 如果CancelIo失败怎么办?
- 3. RemotingConfiguration.Configure失败时该怎么办?
- 4. 如果“git push heroku master”失败,该怎么办?
- 5. 期待列表[未来],如果未来失败,该怎么办?
- 6. 如果git-am与“不匹配索引”失败,该怎么办?
- 7. 如果_POSIX_VDISABLE值为-1,该怎么办?
- 8. 如果collections.defaultdict不可用,该怎么办?
- 9. 如果抛出IOException,我该怎么办?
- 10. 如果setuptools未安装,该怎么办?
- 11. C#EntityFramework Up方法¿如果sql在中间失败怎么办?
- 12. 如果Django的中继单元测试失败会怎么办?
- 13. listview中的Android远程图像 - 如果丢失该怎么办?
- 14. 应用程序失败的密码验证。我该怎么办?
- 15. 验证数据的外部服务失败时该怎么办?
- 16. 使用Django South失败的模式迁移:我该怎么办?
- 17. 怎么办时的ServletContextListener#contextInitialized()失败
- 18. MPMoviePlayerViewController,如果失败会怎么样?
- 19. 如果新建失败会怎么样?
- 20. 我该怎么办?
- 21. NullPointerException - 该怎么办?
- 22. 如果call_user_func应该返回false,该怎么办?
- 23. NSUnknownKeyException查看...该怎么办?
- 24. 我该怎么办在PHP
- 25. 我该怎么办日期
- 26. GWT JDBC我该怎么办?
- 27. 我该怎么办用C
- 28. SSL - 我该怎么办?
- 29. “ConnectionResetError”我该怎么办?
- 30. jQuery hashchange该怎么办?
我不认为这个问题值得downvotes。这是基本的,但它有相当的措辞和迄今为止的答案是真诚的。你需要将Pod Six的面部剪切掉。 – Drew 2010-03-10 05:55:01