我编写了一个简单的代码,用于检查输入字段是否为空,如果它不为空,则在该字段中输入的内容应该是新创建的数据库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!";
}
}
带有问号的部分是我不知道究竟要做什么的地方。
答案 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