0

入力フィールドが空かどうかをチェックする単純なコードを書きました。空でない場合、そのフィールドに入力された内容は、新しく作成されたデータベース 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!";
    }

}

疑問符が付いている部分は、正確に何をすべきかわからない場所です。

4

1 に答える 1

0

これを行う最善の方法は、情報スキーマDB にクエリを実行することです。既存の 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

于 2013-02-21T22:30:45.187 に答える