在检查sql是否完成其工作时,尝试捕获捕获PDO错误的唯一方法吗?

时间:2013-04-26 13:32:27

标签: php pdo

尝试抓住捕获PDO错误的唯一方法来检查sql是否已执行?在早期,我曾经如下所述。我不需要错误消息,错误名称等。只是一个真或假。如果sql工作与否。除了使用try catch之外,是否可以通过其他方式完成。

之前

$createUser = (insert into table (someCol) values (someVal));

$exeCreateUser = mysql_query($createUser);

if($exeCreateUser)
{ //The SQL query worked well
  echo 'All went on well';
}else{
 //The SQL query failed!
  echo 'Failed';
}

立即

$sql  = 'insert into names (names) values (:what)';
$what = "This value";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':what', $what, PDO::PARAM_STR, 5);
$stmt->execute();

我可以做以前做过的事情,而不是使用try catch吗?

3 个答案:

答案 0 :(得分:1)

来自http://www.php.net/manual/en/pdostatement.execute.php

返回值

  

成功时返回TRUE,失败时返回FALSE。

答案 1 :(得分:0)

在调用方法之前,您可以使用PDO::setAttributePDO::ATTR_ERRMODE设置为PDO::ERRMODE_EXCEPTION以外的值。

如果您这样做,则需要使用PDO::errorCodePDOStatement::errorCode 检查错误,适用于每项操作

  

PDO::errorCode()仅检索执行操作的错误代码   直接在数据库句柄上。如果您创建PDOStatement对象   通过PDO::prepare()PDO::query()并调用错误   语句句柄,PDO::errorCode()不会反映该错误。您   必须调用PDOStatement::errorCode()才能返回错误代码   对特定语句句柄执行的操作。

答案 2 :(得分:-1)

您既不需要尝试也不需要其他任何东西。

通常,您无需检查查询是否成功。在经过适当调整的系统上,所有查询都可以顺利运行。

但如果一些查询变得疯狂 - 这意味着出现问题并且必须停止整个应用程序。所以 - 检查每个单独的查询是没有用的 - 你只需要在应用程序级别捕获抛出的异常。

所以,完全没有这种条件的用处。插入失败并不意味着CreateUser失败,而是整个站点失败。并且您不需要本地检查,只需要站点范围的异常处理程序和一般错误503页