Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当表不存在时,如何处理PDO致命错误?_Php_Mysql_Pdo - Fatal编程技术网

Php 当表不存在时,如何处理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

我想打印方便的错误消息(用户可以理解的消息),而不是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));
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新手。但是,为什么要查询一个不存在的表呢?