PDO更新查询中的跟踪错误


Track error in PDO update query

我有一个更新查询

$query = $db->prepare("UPDATE user SET UserID ='6', UserName ='xyz' WHERE UserID= '6' ");查询-> execute (),

运行良好,但当我更改字段UserNameUserName

$query = $db->prepare("UPDATE user SET UserID ='6', UserNamee ='xyz' WHERE UserID= '6' ");查询-> execute (),

它应该显示错误,但是没有显示任何错误

我只是想在我的项目中处理这些错误。

您可以使用errorCode()函数跟踪PDO中的错误,此函数在没有错误时返回0000,否则返回4位数(错误代码),对于您的示例,您可以尝试:

$query = $db->prepare("UPDATE user SET UserID='6',UserNamee='xyz' WHERE UserID= '6' ");         
$query->execute();
if($query->errorCode()=='0000')
{ echo 'no error'; }
else
{ echo 'error'; }

PDO有各种错误模式,您可以将其作为driver_options参数传递给构造函数。你可以在http://php.net/manual/en/pdo.setattribute.php上找到它们。大多数人使用array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)

你应该使用try-catch:

        try {
            $query = $db->prepare("UPDATE user SET UserID='6',UserName='xyz' WHERE UserID= '6' "); 
            $query->execute();
        } catch (PDOException $e) {
            echo $e->getMessage();
        }

请记住在连接数据库后执行此操作:

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $db->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
        $query = $db->prepare("UPDATE user SET UserID='6',UserNamee='xyz' WHERE UserID= '6' "); 
        if (!$query) {
              print_r($db->errorInfo());
        }
else
    $query->execute();