0

Is try catch the only way to catch PDO errors to check if a sql performed? Early on, I used to do like below. I don't need the error message, error names etc. Just a true or false. If the sql worked or not. Can this be done in some other way other than using try catch.

Before

$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';
}

Now

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

Can I do something like I used to do before, instead of using try catch?

4

3 回答 3

1

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

返回值

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

于 2013-04-26T13:35:46.243 回答
0

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

PDO::errorCode如果您这样做,您需要使用或来检查错误PDOStatement::errorCode无论是否适合每个操作

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

于 2013-04-26T13:34:46.503 回答
-1

您不需要 try..catch 或其他任何东西。

一般来说,您不需要检查您的查询是否成功。在经过适当调整的系统上,所有查询都能顺利运行。

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

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

于 2013-04-26T14:13:14.527 回答