Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php pdo捕获和输出mysql错误_Php_Pdo_Try Catch - Fatal编程技术网

Php pdo捕获和输出mysql错误

Php pdo捕获和输出mysql错误,php,pdo,try-catch,Php,Pdo,Try Catch,我有一个用PDO执行的insert语句。插入工程伟大,但如果有一个错误,我希望它显示给用户 我有下面的试接块 try{ $insertuser = $db->prepare('INSERT INTO `she_she`.`Persons` (`idnumber`,`addedby`,`firstname`, `middlename`, `surname`, `fullname`, `gender`, `birthdate`, `homelanguage`, `department

我有一个用PDO执行的insert语句。插入工程伟大,但如果有一个错误,我希望它显示给用户

我有下面的试接块

try{ 
    $insertuser = $db->prepare('INSERT INTO `she_she`.`Persons` (`idnumber`,`addedby`,`firstname`, `middlename`, `surname`, `fullname`, `gender`, `birthdate`, `homelanguage`, `department`, `employeetype`, `employeestatus`) VALUES  (?,?,?,?,?,?,?,?,?,?,?,?)'); 
    $insertuser->execute(array($idnumber,$user,$firstname, $middlename, $surname, $fullname, $gender, $birthdate, $language, $department, $employmenttype, $personstatus));  
} 
catch(PDOException $exception){ 
    return $exception; 
} 
如果查询失败,或者比方说一个重复的IDNumber,我希望它显示给用户

如果我只是尝试回显变量$exception,它将不起作用

我想将MySQL错误返回给用户。

您应该使用以下方法:

return$exception->getMessage();
请参见异常类文档中的页面:


默认情况下,PDO不处于显示错误的状态。您需要在DB连接中提供以下内容

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

更多信息可参见

1。在数据库连接后添加错误模式\u异常模式:

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
2.然后必须对所有mysql查询使用try{}catch{}方法。像这样:

try {
    $SQL = "DELETE FROM items WHERE item_id=:item_id";
    $m = $dbh->prepare($SQL);
    $m->bindParam(':item_id', $item_id, PDO::PARAM_INT);
    $m->execute();
    //success
    $return = "Your success message.";
}
catch (PDOException $e) {
    //error
    $return = "Your fail message: " . $e->getMessage();
}

$exception将是PDOException类型的对象,其许多属性中的两个将是mysql错误代码和错误消息。谢谢。如果我将error mode设置为
ERRMODE\u WARNING
它将在页面顶部返回警告,那么我如何将其设置为变量的值,并在页面上希望返回的位置返回该值。感谢在catch块中,您可以将$exception设置为其他变量,以供以后使用<代码>捕获(PDOException$exception){$error=$exception->getMessage();}//后面的代码回送“发生了错误”$错误或类似的东西。