首页  >  文章  >  数据库  >  为什么我的 PDO 异常抛出空值并且不执行?

为什么我的 PDO 异常抛出空值并且不执行?

Susan Sarandon
Susan Sarandon原创
2024-10-28 12:06:01373浏览

Why Are My PDO Exceptions Throwing Null Values and Not Executing?

如何处理 PDO 异常

问题:

在使用 PHP PDO 类时,尝试处理错误会导致报告空值且保持不活动状态的代码。

代码:

<code class="php">$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Exception handling is enabled

$id = 33;
$name = "Mario Bros.";
$url = "http://nintendo.com";
$country = "jp";

try {
    $sql = "UPDATE table_users SET name = :name, url = :url, country = :country WHERE user_id = :user_id";
    $statement = $connection->prepare($sql);
    $statement->bindParam(':user_id', trim($id), PDO::PARAM_INT);
    $statement->bindParam(':name', trim($name), PDO::PARAM_STR);
    $statement->bindParam(':url', trim($url), PDO::PARAM_STR);
    $statement->bindParam(':country', trim($country), PDO::PARAM_STR, 2);
    $status = $statement->execute();
} catch (PDOException $e) {
    echo $e->getMessage();
}</code>

解决方案:

PDO 不会抛出异常自动排除异常。要启用异常处理,必须在尝试执行任何查询之前添加以下行:

<code class="php">$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);</code>

说明:

通过将 PDO 错误模式设置为 ERRMODE_EXCEPTION,所有与 PDO 相关的错误都将作为异常抛出。然后可以使用 try/catch 块来处理这些异常并向用户或日志系统提供有意义的错误消息。

以上是为什么我的 PDO 异常抛出空值并且不执行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn