问题:
在使用 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中文网其他相关文章!