小编Ser*_*kin的帖子

PDO :: ERRMODE_EXCEPTION不会禁止警告

http://php.net/manual/en/pdo.error-handling.php

PDO :: ERRMODE_WARNING

除了设置错误代码外,PDO还会发出传统的E_WARNING消息.如果您只是想在不中断应用程序流程的情况下查看发生了什么问题,则此设置在调试/测试期间非常有用.

PDO :: ERRMODE_EXCEPTION

除了设置错误代码之外,PDO还将抛出PDOException并设置其属性以反映错误代码和错误信息.此设置在调试期间也很有用,因为它会在错误点处有效地"炸毁"脚本,非常快速地指向代码中的潜在问题区域(请记住:如果异常导致事务,事务会自动回滚脚本终止).

异常模式也很有用,因为您可以比使用传统的PHP样式警告更清楚地构建错误处理,并且使用比在静默模式下运行并显式检查每个数据库调用的返回值更少的代码/嵌套.

但是,代码:

$connection = new PDO('mysql:host=127.0.0.1;dbname=test', 'root', '***');
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$connection->query('SET wait_timeout=1;');
sleep(2);

try {
    $connection->query('SELECT 1;');
} catch (\Exception $e) {
    echo sprintf('Caught %s exception: %s', get_class($e), $e->getMessage()) . PHP_EOL;
}
Run Code Online (Sandbox Code Playgroud)

触发警告:

PHP Warning:  PDO::query(): MySQL server has gone away in pdo.php on line 13
PHP Warning:  PDO::query(): Error reading result set's header in pdo.php on line 13
Caught PDOException exception: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away …
Run Code Online (Sandbox Code Playgroud)

php mysql pdo

5
推荐指数
1
解决办法
655
查看次数

标签 统计

mysql ×1

pdo ×1

php ×1