PHP PDO检查mysql错误
我有一个让我发疯的问题。我只想检查查询是否有错误,如果是,则显示错误,否则运行查询 我有以下几点(因为它运行了两次insert查询)可以工作 我尝试了很多方法(其中包括PHP PDO检查mysql错误,php,oop,pdo,Php,Oop,Pdo,我有一个让我发疯的问题。我只想检查查询是否有错误,如果是,则显示错误,否则运行查询 我有以下几点(因为它运行了两次insert查询)可以工作 我尝试了很多方法(其中包括try(){}catch(){}方法),但除了上面的代码外,其他方法都不起作用。它以我想要的方式显示错误,并且仅在出现错误时显示,但运行exec()两次 有人能救我吗?如果您想看到错误发生时抛出异常,只需(另请参见:): 例如,这将使您的代码自动抛出异常。也许正是你想要的 代码的实际问题是执行exec两次。你不需要: $succe
try(){}catch(){}
方法),但除了上面的代码外,其他方法都不起作用。它以我想要的方式显示错误,并且仅在出现错误时显示,但运行exec()
两次
有人能救我吗?如果您想看到错误发生时抛出异常,只需(另请参见:): 例如,这将使您的代码自动抛出异常。也许正是你想要的 代码的实际问题是执行
exec
两次。你不需要:
$success = $db->exec($sql);
if (!$success) {
echo $defaults->throwError('MySql error', implode(":", $db->errorInfo()));
} else {
# do not exec *again* here.
$defaults->writeLog($table, $db->lastInsertId(), 'add');
}
为什么要在
else
部分中再次执行查询?通常,您只是尝试运行查询,如果发生错误,请对其作出反应
[..]
$dbdata = new mySQLAccessData();
$db = new PDO($dbdata->hostname,$dbdata->username,$dbdata->password);
$defaults = new Defaults();
[..]
if(!$db->exec($sql)){
echo($defaults->throwError('MySql error',implode(":",$db->errorInfo())));
}else{
$defaults->writeLog($table,$db->lastInsertId(),'add');
}
据我所知,在实际执行查询之前,没有“测试”查询的选项。请阅读此处,为什么不将
$db->exec($sql)
的结果赋给一个变量<代码>$result=$db->exec($sql)代码>。然后在if($result)
中使用$result
值。啊,我不知道查询会在if()
部分中运行。谢谢你的提示@Maurice只要触发exec()
方法,查询就会运行。不管你是在哪种情况下做的。
$success = $db->exec($sql);
if (!$success) {
echo $defaults->throwError('MySql error', implode(":", $db->errorInfo()));
} else {
# do not exec *again* here.
$defaults->writeLog($table, $db->lastInsertId(), 'add');
}
[..]
$dbdata = new mySQLAccessData();
$db = new PDO($dbdata->hostname,$dbdata->username,$dbdata->password);
$defaults = new Defaults();
[..]
if(!$db->exec($sql)){
echo($defaults->throwError('MySql error',implode(":",$db->errorInfo())));
}else{
$defaults->writeLog($table,$db->lastInsertId(),'add');
}