如何检查数据库中已有的空表[重复]
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`;
【讨论】:
以上是关于如何检查数据库中已有的空表[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 h2 数据库 (v1.4.195) 中的空表上重复选择 * 有多糟糕?