【问题标题】:Table Name Availability check with PHP [duplicate]使用 PHP 进行表名可用性检查 [重复]
【发布时间】: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 查询并检查输出。如果表在输出中,则它存在。如果它不在输出中,则它不存在。 (出于好奇,您为什么希望此应用程序能够创建表格?在大多数 情况下,这不是正确的设计。)
  • 听起来您是在动态创建表,这对于几乎所有问题来说都是一种糟糕且倒退的方法。

标签: php mysql


【解决方案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;

【讨论】:

    猜你喜欢
    • 2013-01-02
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 2015-11-10
    • 2017-01-14
    • 1970-01-01
    • 2021-10-13
    相关资源
    最近更新 更多