【问题标题】:how to check a empty table already in database [duplicate]如何检查数据库中已有的空表[重复]
【发布时间】:2013-02-01 19:25:48
【问题描述】:

我正在创建一个站点的管理面板。当管理员输入一个类别时,一个表 在数据库中创建相同的类别名称,字段都是相同的.. 在开始管理员输入很多类别..那么我如何检查一个表是否已经在数据库中创建..因为所有表都是空的。为此

我正在尝试这段代码

     <?php $con = mysql_connect("localhost","root","");
     if (!$con)
     {die('Could not connect: ' . mysql_error());}
   $sql="SELECT * FROM admin";//(for trial im a changing the name manuaaly)

    $result=@mysql_query($sql);

  if (!$result)

      {
        echo "No table exists";
     }
      else
      {
     echo "yes";
     }
    ?>

但是如果表在数据库中,它总是显示“不存在表”。 我该如何解决这个问题..

【问题讨论】:

  • 请不要将mysql_* 函数用于新代码。他们是deprecated。将prepared statementsPDOMySQLi 一起使用。
  • 您的逻辑存在根本缺陷。一个空表可以并且确实存在。检查表中是否存在行没有任何意义。如果表不存在,您会遇到查询失败(例如 mysql_query 返回 false 和错误代码 1146,而不是“未找到行”
  • 但我的客户正在按类别输入 200 个表格,以便他想清楚这些表格是在之前输入的......所以我问这个......

标签: php mysql


【解决方案1】:

不要为每个类别创建单独的表格!
将其设为一个,包含所有字段集和一个具有类别名称(或类别 ID,取决于数据库架构)。

这是数据库工作原理的基础。

因此,您只需运行常规查询即可检查此类类别名称是否已存在:

SELECT id FROM categories WHERE name = 'name to check';

【讨论】:

  • 是的先生,我可以使用 SELECT id FROM categories WHERE name = 'name to check';这种方法..但是将所有记录保存在单个表中..然后所有记录都超过10000..那么在这种情况下它会影响mysql查询..
【解决方案2】:

看看INFORMATION_SCHEMA schema,特别是TABLES table

IE:

SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = `admin_table_name`;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-10
    • 2011-12-22
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 2021-09-18
    相关资源
    最近更新 更多