MySQL检查表是否存在而不会引发异常

2022-08-30 07:08:32

检查MySQL中是否存在表(最好是通过PHP中的PDO)而不引发异常的最佳方法是什么。我不想解析“SHOW TABLES LIKE”等的结果。一定有某种布尔查询吗?


答案 1

使用预准备语句查询information_schema数据库似乎是最可靠、最安全的解决方案。

$sql = "SELECT 1 FROM information_schema.tables 
        WHERE table_schema = database() AND table_name = ?";
$stmt =  $pdo->prepare($sql);
$stmt->execute([$tableName]);
$exists = (bool)$stmt->fetchColumn();

答案 2

如果您使用的是MySQL 5.0及更高版本,则可以尝试:

SELECT COUNT(*)
FROM information_schema.tables 
WHERE table_schema = '[database name]' 
AND table_name = '[table name]';

任何结果都指示该表存在。

寄件人: http://www.electrictoolbox.com/check-if-mysql-table-exists/


推荐