$st = $db->prepare("SELECT * FROM c6ode");
如何检查上述情况下查询的故意 mysql 错误?
最佳答案
您需要将错误模式属性PDO::ATTR_ERRMODE
设置为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
关于php - 如何从PDO PHP 中的prepare() 获取查询错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59804533/