我想检查我使用 PHP 和 PDO 连接到的数据库中是否存在具有特定名称的表。
它必须适用于所有数据库后端,如 MySQL、SQLite 等。
原文由 Andre 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是检查表是否存在的完整函数。
/**
* Check if a table exists in the current database.
*
* @param PDO $pdo PDO instance connected to a database.
* @param string $table Table to search for.
* @return bool TRUE if table exists, FALSE if no table found.
*/
function tableExists($pdo, $table) {
// Try a select statement against the table
// Run it in try-catch in case PDO is in ERRMODE_EXCEPTION.
try {
$result = $pdo->query("SELECT 1 FROM {$table} LIMIT 1");
} catch (Exception $e) {
// We got an exception (table not found)
return FALSE;
}
// Result is either boolean FALSE (no table found) or PDOStatement Object (table found)
return $result !== FALSE;
}
注意:PDO 只会在被告知时抛出异常,默认情况下它是静默的并且不抛出异常。这就是为什么我们也需要检查结果。 请参阅 php.net 上的 PDO 错误处理
原文由 exstral 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答3.1k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读
2 回答1.2k 阅读
1 回答1.2k 阅读
做:
然后捕获错误。如果您没有收到任何错误,但结果集的一列包含“1”,则该表存在。