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

时间:2013-02-21 21:45:14

标签: php mysql

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

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!";
    }

}

带有问号的部分是我不知道究竟要做什么的地方。

1 个答案:

答案 0 :(得分:0)

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

SELECT * 
FROM  `TABLES` 
WHERE  `TABLE_SCHEMA` =  'your_database_name'
AND  `TABLE_NAME` =  'your_table_name'

将您的$result = mysql_query(**???**);更改为

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

而不是

if (mysql_numrows($result) !== 0)

不要忘记将your_database_name更改为您的数据库名称 哦,不要忘记清理你的$ entry_name。 mysql_escape_string