$st = $db->prepare("SELECT * FROM c6ode");
在上述情况下,如何检查查询的故意 mysql 错误?
需要设置错误模式属性PDO::ATTR_ERRMODE
to PDO::ERRMODE_EXCEPTION
.
因为您期望异常会被抛出prepare()
方法,你应该禁用PDO::ATTR_EMULATE_PREPARES
特征。否则,MySQL 服务器在执行该语句之前不会“看到”该语句。
<?php
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'localonly', 'localonly');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->prepare('INSERT INTO DoesNotExist (x) VALUES (?)');
打印(或日志,取决于 PHP 设置)
SQLSTATE[42S02]: Base table or view not found:
1146 Table 'test.doesnotexist' doesn't exist
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)