Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取现有表名并将其与新创建的表进行比较';谁的名字(PHP5)?_Php_Mysql - Fatal编程技术网

如何获取现有表名并将其与新创建的表进行比较';谁的名字(PHP5)?

如何获取现有表名并将其与新创建的表进行比较';谁的名字(PHP5)?,php,mysql,Php,Mysql,我编写了一个简单的代码,用来检查输入字段是否为空,如果不是空的,则在该字段中输入的内容应该是新创建的数据库表的名称。但是我遇到了一个问题,代码需要检查具有该名称的表是否已经存在。这就是我到目前为止所做的: include 'conn.php'; $entry_name = $_POST['entry_name']; // Check if the field is empty if(empty($_POST['entry_name'])) { echo "Please, fill

我编写了一个简单的代码,用来检查输入字段是否为空,如果不是空的,则在该字段中输入的内容应该是新创建的数据库表的名称。但是我遇到了一个问题,代码需要检查具有该名称的表是否已经存在。这就是我到目前为止所做的:

include 'conn.php';

$entry_name = $_POST['entry_name'];

// Check if the field is empty

if(empty($_POST['entry_name'])) {
    echo "Please, fill the name field!";  
}

// If the field is full
else {
    // Check for the duplicated table names 

    $result = mysql_query(**???**);
    if($result == $entry_name) {
        die("Entry with that name already exists, choose a different name!");
    }

    // If there are no tables with entered name, create the new table
    else {
        $entry_name = mysql_real_escape_string($_POST['entry_name']);
        mysql_query("CREATE TABLE `" . $entry_name . "` ( first VARCHAR(30), second VARCHAR(30))");

        echo "$entry_name created successfully!";
    }

}

带问号的部分是我不知道该做什么的地方。

最好的方法是查询数据库。它包含关于现有数据库和表的所有信息。但是mysql只有5个

SELECT * 
FROM  `TABLES` 
WHERE  `TABLE_SCHEMA` =  'your_database_name'
AND  `TABLE_NAME` =  'your_table_name'
更改您的
$result=mysql\u查询(**???**)

$result = mysql_query('SELECT * FROM  `TABLES` WHERE  `TABLE_SCHEMA` =  "your_database_name" AND  `TABLE_NAME` =  "'. $entry_name .'");

if (mysql_numrows($result) !== 0)
不要忘记将
您的\u数据库\u名称
更改为您的数据库名称

哦,别忘了清理你的$entry\u名称

使用
SHOW TABLES
并遍历结果数组。您的代码对于SQL injection.Stop来说也是一个成熟的选择。使用PDO/MySQLi,然后重新提问<代码>mysql*
函数已弃用。(事实上,重新编程太远了。但是说真的,如果您使用的是PHP5,请删除ext/mysql函数)PHP5的哪个版本。现在几乎所有的PHP都是PHP5,但PHP5.1、5.2、5.3等之间有很大的区别。我的答案解决了你的问题吗?我使用的是MySQL 5,但你能在我的代码中举例说明这段代码吗?我从理论上理解它,但由于我还是一个PHP初学者,我在代码中插入它时遇到了问题,我总是在IDE中遇到一些语法错误。ext/mysql不推荐使用。对PHP5来说,使用它是一个可怕的想法。我知道它已被弃用,而且之前也提到过。但杰伊·奎尔用过它。将这个项目改写成mysqli将是他的家庭任务。但是,如果我用mysqli编写示例,如果不更改所有prev,它将根本无法工作。代码。这里有一个好消息,我们可以在我的示例中将mysql更改为mysqli,但没有任何更改。我应该将“if(mysql_numrows($result)!==0”放在哪里?无论我把它放在哪里,在提交我的条目后,我总是会得到“警告:mysql\u numrows()期望参数1是resource,该行中给出的布尔值”。