使用 PHP 进行表名可用性检查 [重复]
Posted
技术标签:
【中文标题】使用 PHP 进行表名可用性检查 [重复]【英文标题】:Table Name Availability check with PHP [duplicate] 【发布时间】:2013-10-02 18:55:13 【问题描述】:我正在尝试使用 php 脚本创建一个表。在此之前,我正在尝试使用 PHP 检查可用的名称。但它不起作用。
即使我输入一个退出的表,它也会显示 Not Exists: Incorrect table name
$sql1 = "SELECT * FROM `$mainnamechk`;";
if (mysql_query($sql1))
echo "<img width='35' height='25' src='img/good.png' title='Database $mainnamechk Exists'>";
else
echo "Not Exists:" . mysql_error();
echo"<br>";
【问题讨论】:
先使用show tables;
查询获取表列表。
@TimWithers 是的,我可以使用它。但我想要一个输入框,当我的人想要创建数据库时..他们会检查使用这个..因为他们不知道 php 和所有..所以我正在创建这个......但它不起作用..
$sql1 = 如果不存在则创建表 table
() 返回 true; if ($sql1) 回声 "";
@BlackCoder:您的用户不必了解 PHP。该代码将运行SHOW TABLES
查询并检查输出。如果表在输出中,则它存在。如果它不在输出中,则它不存在。 (出于好奇,您为什么希望此应用程序能够创建表格?在大多数 情况下,这不是正确的设计。)
听起来您是在动态创建表,这对于几乎所有问题来说都是一种糟糕且倒退的方法。
【参考方案1】:
if(mysql_num_rows(mysql_query("SHOW TABLES LIKE '".$table."'"))==1)
echo "Table exists";
else echo "Table does not exist";
【讨论】:
它为所有人显示Table does not exist
:( 即使我输入现有的表名
使用 %,例如 '%$sql1=MYSQL_QUERY('SELECT count(name) FROM "'.$mainnamechk.'" LIMIT 1');
if(mysql_num_rows($sql1)==0)
echo 'Not exists';
else
echo 'Exists';
【讨论】:
我收到一个错误“警告:mysql_num_rows() 期望参数 1 是资源,第 17 行的 xxxxxxxx.php 中给出的字符串”,第 17 行是if(mysql_num_rows($sql1)==0)
我已经修好了,编辑了笔记。
它现在应该可以工作了。再试一次
仍然错误 - 警告:mysql_num_rows() 期望参数 1 是资源,布尔值在第 17 行给出 inxxx.php
使用这个:FROM " '.$mainnamechk.' " (只要把" 放在前面和结尾)如果再次出现错误,那么问题是关于$mainnamechk。【参考方案3】:
尝试检查 information_schema
SELECT count(*) FROM information_schema.TABLES
WHERE (TABLE_SCHEMA = '" . $database . "') AND (TABLE_NAME = '" . $tablename . "');
如果存在则返回 1,否则返回 0。
$database = "databasename";
$table = "tablename";
$con = new mysqli(/* info */);
$result = mysqli_query($con, "SELECT count(*) FROM information_schema.TABLES WHERE (TABLE_SCHEMA = '" . $database . "') AND (TABLE_NAME = '" . $table . "'");
// $result == 1 or 0
【讨论】:
试过但没用 :( 有什么不好的?你有错误吗? 解析错误:语法错误,第 15 行 xxx.php 中的意外 T_STRING AND 第 15 行是$database = maintable; SELECT count(*) FROM information_schema.TABLES
使用的代码是 SELECT count(*) FROM information_schema.TABLES WHERE (TABLE_SCHEMA = '" . $database . "') AND (TABLE_NAME = '" . $mainnamechk . "');
你的数据库名是可维护的吗?你用引号括起来了吗?请记住,您应该将其设置为结果,我将更新我的答案
是的,名字是maintable,我像这样使用 $database = "maintable";【参考方案4】:
使用INFORMATION_SCHEMA
SELECT * FROM information_schema.tables
WHERE table_schema = 'database name'
AND table_name = 'table_name'
LIMIT 1;
【讨论】:
以上是关于使用 PHP 进行表名可用性检查 [重复]的主要内容,如果未能解决你的问题,请参考以下文章