如何检查数据库中已有的空表[重复]

Posted

技术标签:

【中文标题】如何检查数据库中已有的空表[重复]【英文标题】: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";
     
    ?>

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

【问题讨论】:

***.com/questions/9008299/… 请不要将mysql_* 函数用于新代码。他们是deprecated。将prepared statements 与PDO 或MySQLi 一起使用。 您的逻辑存在根本缺陷。一个空表可以并且确实存在。检查表中是否存在行没有任何意义。如果表不存在,您会遇到查询失败(例如 mysql_query 返回 false 和错误代码 1146,而不是“未找到行” 但我的客户正在按类别输入 200 个表格,以便他想清楚这些表格是在之前输入的......所以我问这个...... 【参考方案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`;

【讨论】:

以上是关于如何检查数据库中已有的空表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

检查列表是不是包含多个值android

在 h2 数据库 (v1.4.195) 中的空表上重复选择 * 有多糟糕?

同步使用 Firebase observeSingleEventOfType

检查数据库中已存在的电子邮件,但当前登录ID的电子邮件除外

如何使用条件[重复]检查多个值

java怎样判断输入的数据与数据库中已有的数据重复