1

これは以前に何百回も尋ねられたことを知っていますが、インターネットを見回して、私の構文に問題がある可能性があるものを見つけることができませんでした:

mysql_select_db('Projects');

        $sql = "CREATE TABLE $data[ID] (
            ID INT NOT NULL,
            Creator INT NOT NULL,
            Name VARCHAR(20) NOT NULL,
            Version VARCHAR(20) NOT NULL,
            Status VARCHAR(20) NOT NULL,
            Date VARCHAR(20) NOT NULL,
            Skript VARCHAR(20) NOT NULL,
            Filename VARCHAR(20) NOT NULL,
            Downloads INT NOT NULL,
            PRIMARY KEY(ID)
            )";

        if (mysql_query($sql)){

            echo "Created";

        }else{

            echo "Not created, ".mysql_error();

        }

バックティック、引用符などを使用してみましたが、無駄でした。エラーに表示されたテーブル名(21)は正しいです。

エコー「作成されていません」を含む、私が得るエラーは次のとおりです;:

作成されませんでした。SQL 構文にエラーがあります。'23 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください (1 行目の ID INT NOT NULL, Creator INT NOT NULL, Name VARCHAR(20) NOT NUL'

4

3 に答える 3

6

MySql のテーブルを含むオブジェクトの命名規則:

http://dev.mysql.com/doc/refman/5.1/en/identifiers.html

識別子は数字で始めることができますが、引用されていない限り、数字だけで構成することはできません。

テーブルの名前を数字で始めることはできません

これは例えば動作します

   $sql = "CREATE TABLE 't'.$data[ID] (
        ID INT NOT NULL,
        Creator INT NOT NULL,
        Name VARCHAR(20) NOT NULL,
        Version VARCHAR(20) NOT NULL,
        Status VARCHAR(20) NOT NULL,
        Date VARCHAR(20) NOT NULL,
        Skript VARCHAR(20) NOT NULL,
        Filename VARCHAR(20) NOT NULL,
        Downloads INT NOT NULL,
        PRIMARY KEY(ID)
        )";

ご覧のとおり、t

またはその周りにバッククォートを使用します。そのように

   `$data[ID]`
于 2013-04-20T14:04:36.733 に答える
0

$data[ID] の値を除いて、クエリは正しいようです。あなたはそれをチェックする必要があります。

問題は $data[ID] の値にあると思いますが、その値は何ですか? また、古い mysql_query() の代わりに、mysqli_query() または PDO (bestprogrammerintheworld が示すように) を使用してください。

于 2013-04-20T14:04:48.930 に答える
0

SQL エラーをトリガーする SQL コードである最も重要な情報を省略できました。しかし、それを生成する PHP からいくつかのヒントを収集できます。

$sql = "CREATE TABLE $data[ID] (
            ID INT NOT NULL,

...そしてエラーメッセージ:

23 年頃 ( ID INT NOT NULL

次の SQL を実行しようとしていると思われます。

CREATE TABLE 23 (
    ID INT NOT NULL

という名前のテーブルを実際に作成したい場合は、23作成を含め、使用するたびにバッククォートで引用する必要があります。

CREATE TABLE `23` (
    ID INT NOT NULL
于 2013-04-20T14:07:39.417 に答える