使用 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 :( 即使我输入现有的表名 使用 %,例如 '%%' 已经尝试了所有可能的方式:(【参考方案2】:
$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 进行表名可用性检查 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

php 可用性检查和WPML之间的兼容性(仅限重复产品)

目标c检查蓝牙可用性是不是已更改[重复]

检查 swift 中是不是有可用的互联网连接 [重复]

检查互联网连接是不是可用[重复]

即使设备连接到 Wifi 或移动数据,也要检查互联网可用性 [重复]

在具有互联网数据速度的android中检查网络可用[重复]