有时碰巧mysql_query()无法插入数据而我不知道它。所以,问题是我怎么知道它何时发生?
答案 0 :(得分:9)
引用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
。请记住:用户不需要知道(并且不会理解)技术错误消息 - 所以不要显示它。
答案 1 :(得分:3)
您可以使用mysql_error php.net/mysql_error获得更好的解释,然后显示或将其记录在文件中。
答案 2 :(得分:3)
我通常做的一项检查就像示例中的
$result = mysql_query( $query );
if ( !empty( $error = mysql_error() ) )
{
echo 'Mysql error '. $error ."<br />\n";
}
else
{
// the query ran successfully
}
这是对任何类型的查询的良好检查
答案 3 :(得分:1)
建议为mysql_query创建一个检测失败的包装器,并在某处记录查询和mysql_error
答案 4 :(得分:1)
如果您正在使用敏感的客户端库,它将在SQL命令失败时抛出异常,您可以通过编程方式检查错误代码以了解要执行的操作。
如果没有代码处理该特定错误路径,您应该运行标准错误处理程序,将错误,堆栈跟踪和一些其他调试信息记录到日志中。
答案 5 :(得分:0)
你必须分析你的sql。你逃脱了参数吗?这听起来可能是个问题。你可以粘贴你的sql所以我们可以帮助你。
显示错误,您可以例如。
$result = mysql_query($query) or die ("Error in query: $query. ".mysql_error());
答案 6 :(得分:0)
如果错误原因是死锁,您可能想再试一次。
答案 7 :(得分:0)
您可以在插入/更新/删除查询后立即执行此查询,检查MySQL插入/更新/删除的行数。
SELECT ROW_COUNT() as rows_affected
如果返回0
,则插入失败。如果它返回1
或更多,则表示您已成功。
请参阅:http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_row-count
答案 8 :(得分:-2)
可能你可以检查LAST_INSERT_ID()(PHP中的mysql_insert_id())。前提是您的表具有auto_increment列。