当前位置: 首页 > 面试题库 >

如何检查PHP是否存在MySQL表?

谢阳成
2023-03-14
问题内容

理论上听起来很简单,但是我已经做了很多研究,但很难弄清楚。

我如何检查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...
}

诚然,它比Python惯用语言更具有Python风格,但另一方面,您不必担心要处理大量额外数据。

编辑

因此,截至我撰写此消息时,此答案的标记次数至少减少了两次。假设我犯了一些巨大的错误,我去了并运行了一些基准测试,这就是我发现当表不存在时我的解决方案比最接近的替代方案快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安装(这是迄今为止唯一的数据库)。要查看出口,请看这里。

还有更多

该特定解决方案还具有更多的数据库独立性,因为同一查询将在PgSQL和Oracle中工作。

最后

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

如果您需要保证该表
存在,请使用mysql_errno()来获取错误代码并将其与相关的MySQL错误进行比较。



 类似资料:
  • 问题内容: 这可能是一件容易的事,但是我是一个业余爱好者,事情对我来说并不奏效。 我只想检查$ lectureName显示的行是否存在。如果某行确实存在$ lectureName,我希望该函数返回“ assigned”(如果没有),则它应返回“ available”。这就是我所拥有的。我相当确定这是一团糟。请帮忙。 当我这样做时,所有返回的内容都是可用的,即使应该返回已分配的内容。 问题答案: 这

  • 在我的应用程序中,我有一个适用于多个用户的通用查询。在某些情况下,用户之间的表结构可能不同。我有一个查询,我只想应用于列存在于表中的用户。

  • 问题内容: 我需要帮助检查数据库中是否存在行。就我而言,该行包含一个电子邮件地址。我得到结果: 这是我当前正在使用的代码: 有没有更好的方法来检查MySQL中是否存在行(在我的情况下,检查MySQL中是否存在电子邮件)? 问题答案: 以下是经过尝试,测试和证明的检查行是否存在的方法。 (其中一些我自己使用,或者过去使用过)。 编辑: 我在使用两次的语法中犯了一个先前的错误。请查阅修订版本。 即:

  • 我需要帮助检查数据库中是否存在行。在我的例子中,该行包含一个电子邮件地址。我得到的结果是: 这是我目前使用的代码: 有没有更好的方法来检查MySQL中是否存在行(在我的例子中,检查MySQL中是否存在电子邮件)?

  • 问题内容: 建立连接后是否可以检查(MySQL)数据库是否存在。 我知道如何检查数据库中是否存在表,但是我需要检查数据库是否存在。如果没有,我必须调用另一段代码来创建它并填充它。 我知道所有这些听起来都不太优雅-这是一个快速又肮脏的应用程序。 问题答案: 如果您只想知道数据库是否存在,以免在尝试创建数据库时出错,只需使用(From here):

  • 问题内容: 如何检查PHP中是否存在URL(非404)? 问题答案: 这里: 在这里和上面帖子的下面,有一个curl解决方案: