Sia*_*agh 25 php database error-handling pdo
我有以下代码:
$sql3 = "update news set date='$time' where id='2'";
$sql3 = $connect->exec($sql3);
if(!$sql3)
{
print_r($connect->errorInfo());
$error = $connect->errorInfo();
die ("Error: (".$error[0].':'.$error[1].') '.$error[2]);
}
Run Code Online (Sandbox Code Playgroud)
当我运行脚本时,有时我得到错误号'00000'.我的意思是它介绍了IF.这一切都是随机的.输出(有时):
Array ( [0] => 00000 [1] => [2] => )
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能解决这个问题?
PS:脚本每次都正确执行.
Som*_*ens 35
PDO错误代码00000意味着一切正常.你遇到错误检查代码的原因$sql3是返回0(没有行受影响),PHP将其评估为false.尝试明确检查areturn false;
if($sql3 === false)
Run Code Online (Sandbox Code Playgroud)
如果exec没有更新任何行,它将返回0.这使if(!$ sql3)评估为false,你应该这样做:
if($sql3 === false){
}
Run Code Online (Sandbox Code Playgroud)
根据我的经验,格式错误的查询(语法错误)和失败的查询(例如未插入任何内容的 INSERT)也可能错误地返回错误代码 00000。您应该继续尝试在 SQL 控制台上运行完整的查询,然后查看为什么它失败了。我真的不知道为什么没有返回正确的错误消息。这是我们使用的代码片段
$r = $pdo->prepare($sql);
if (!$r->execute($input_parameters)) { # query failed
if ($bLogFailures) {
error_log('query failed: ERROR['.$pdo->errorCode().':'.print_r($pdo->errorInfo(), true).'] QUERY['.$sql.']');
}
return false;
}
Run Code Online (Sandbox Code Playgroud)