Php 当表不存在时,如何处理PDO致命错误?
我想打印方便的错误消息(用户可以理解的消息),而不是PDO系统fatel错误 我有下面的PDO语句,如果该表不存在,我想打印错误消息表不存在Php 当表不存在时,如何处理PDO致命错误?,php,mysql,pdo,Php,Mysql,Pdo,我想打印方便的错误消息(用户可以理解的消息),而不是PDO系统fatel错误 我有下面的PDO语句,如果该表不存在,我想打印错误消息表不存在 $db = new PDO('mysql:host=localhost;dbname=cnf20;charset=utf8mb4', 'root', '', array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); func
$db = new PDO('mysql:host=localhost;dbname=cnf20;charset=utf8mb4', 'root', '', array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
function getData($db) {
$stmt = $db->query("SELECT * FROM tb_accessory_info1");
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
try {
foreach(getData($db) as $row) {
echo $row['part_no'];
}
} catch(PDOException $ex) {
$db->rollBack();
echo $ex->getMessage();
}
目前我收到了这个错误消息
Fatal error: Uncaught PDOException: There is no active transaction
in......on line 15
相反,我想打印用户可以理解的错误消息,如“请再试一次!”
请支持我!谢谢正如Paul所说,不清楚为什么要查询不存在的表,但一种方法是在运行其他语句之前检查MySQL中是否存在该表:
SELECT *
FROM `information_schema`.`tables`
WHERE `table_schema` = 'database_name' AND `table_name` = 'table_name'
LIMIT 1;
这假设连接到数据库的用户对
信息\u架构
表具有读取权限。用您的值替换'database\u name'
和'table\u name'
。$db->rollBack()代码>是否存在任何事务?我没有看到任何。没有任何事务,甚至在SELECT语句之后没有任何可回滚的内容。谢谢兄弟!我是PDO新手。但是,为什么要查询一个不存在的表呢?