PHP PDO.查询正确时错误号'00000'

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)


Ous*_*ama 7

如果exec没有更新任何行,它将返回0.这使if(!$ sql3)评估为false,你应该这样做:

if($sql3 === false){

}
Run Code Online (Sandbox Code Playgroud)


Col*_*tor 6

根据我的经验,格式错误的查询(语法错误)和失败的查询(例如未插入任何内容的 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)