php - 如何使用 PHP 检查 MySQL 表是否存在?

标签 php mysql if-statement

理论上听起来很简单,但我已经进行了大量研究,但无法弄清楚这一点。

如何检查 MySQL 表是否存在以及它是否确实执行了某些操作。 (我想一个简单的 php if/else 语句可以解决这个问题)

有没有办法做到这一点?

这是我对 cwallenpoole 的回复所做的:

mysql_connect("SERVER","USERNAME","PASSWORD");
mysql_select_db('DATABASE');

$val = mysql_query('select 1 from `TABLE`');

if($val !== FALSE)
{
   print("Exists");
}else{
   print("Doesn't exist");
}

最佳答案

// Select 1 from table_name will return false if the table does not exist.
$val = mysql_query('select 1 from `table_name` LIMIT 1');

if($val !== FALSE)
{
   //DO SOMETHING! IT EXISTS!
}
else
{
    //I can't find it...
}

诚然,它比 PHP 惯用语更 Pythonic,但另一方面,您不必担心处理大量额外数据。

编辑

因此,在我撰写此消息时,此答案至少已被标记两次。假设我犯了一些巨大的错误,我跑了一些 benchmarks ,这就是我发现,当表不存在时,我的解决方案比最接近的替代方案快 10% 以上,而当表存在时,它比最接近的替代方案快 25% 以上:

:::::::::::::::::::::::::BEGINNING NON-EXISTING TABLE::::::::::::::::::::::::::::::
23.35501408577 for bad select
25.408507823944 for select from schema num rows -- calls mysql_num_rows on select... from information_schema.
25.336688995361 for select from schema fetch row -- calls mysql_fetch_row on select... from information_schema result
50.669058799744 for SHOW TABLES FROM test
:::::::::::::::::::::::::BEGINNING EXISTING TABLE::::::::::::::::::::::::::::::
15.293519973755 for good select
20.784908056259 for select from schema num rows
21.038464069366 for select from schema fetch row
50.400309085846 for SHOW TABLES FROM test

我尝试对 DESC 运行此命令,但在 276 秒后超时(我的答案为 24 秒,276 无法完成对不存在表的描述)。

为了更好地衡量,我正在针对其中只有四个表的架构进行基准测试,这是一个几乎全新的 MySQL 安装(这是迄今为止唯一的数据库)。要查看导出,请查看 here .

还有更多

这个特殊的解决方案也更加独立于数据库,因为相同的查询可以在 PgSQL 和 Oracle 中工作。

终于

mysql_query() 对于不是“此表不存在”的错误返回 FALSE。

如果需要保证表存在,使用mysql_errno()获取错误码并与相关MySQL errors比较.

关于php - 如何使用 PHP 检查 MySQL 表是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6432178/

相关文章:

php - Mysql查询检索表列标题然后在循环中使用

php - 选择包含每个唯一字段值的行并按另一个有限制的字段排序

c# 你的 SQL 语法有错误

r - 如果不是R中的条件?

java - 为什么我收到错误 'illegal start of type'

PHP进程加载并卡住所有CPU

php - 从 URL 中的 $_GET 检索变量时 undefined index

PHP:CURL 已启用但没有效果

python - SqlAlchemy 1.0.0 添加 'AND NULL' 以加入未定义外键的位置

iphone - If 语句不适用于空格字符