2011-10-18 14 views
0

カラム名としてPHPのmd5(microtime())の結果を持つテーブルを作成するときに構文エラーが発生します。カラム名としてのMySQLハッシュ値

は特に、エラーがそれを囲む**と一部で投げている:それは前にそれに他の2つのハッシュ値その場所で投げられていないされている理由は私を混乱さ何

CREATE TABLE form_data_38 (
    id   INT SIGNED auto_increment NOT NULL, 
    rltd_pri_key INT SIGNED NULL, 
    0accc77c084cc74a51dee479f8d095e3 TEXT(65535) NOT NULL, 
    **092e60b78f7804e86ea9a6e83701a929 TEXT(65535) NOT NULL**, 
    6734131796201537410e4d43635bf1b3 TEXT(65535) NULL, 
    PRIMARY KEY (id) 
) TYPE=InnoDB; 

です。私はカラム名に「a」を追加し、テーブルを作成しました。私はMySQLの命名規則を検索しましたが、これまで何も考えていません。これは、すべての英数字プラス '_'と '$'が使用できることを示しています。この場合は問題ありません。

私には何が欠けていますか?

+0

を、私はこれが他のハッシュ値と前に働いていることにも注意してください。 –

+0

答えを見つけたら、答えとして投稿してください。まだ十分な担当者がいない場合は、それを得るためにSOに貢献し続けてください。ありがとう –

+1

なぜ地球上でこのような列名を使用しますか? –

答えて

1

逆引用符であなたのテーブル名とフィールド名を入れて:`09e4_fieldName`、少なくともこのような問題を作成することができるもののために:

CREATE TABLE form_data_38 
    (id INT SIGNED auto_increment NOT NULL 
    , rltd_pri_key INT SIGNED NULL 
    , `0accc77c084cc74a51dee479f8d095e3` TEXT(65535) NOT NULL 
    , `092e60b78f7804e86ea9a6e83701a929` TEXT(65535) NOT NULL 
    , `6734131796201537410e4d43635bf1b3` TEXT(65535) NULL 
    , PRIMARY KEY (id) 
) 
ENGINE = InnoDB ;     --- ENGINE, not TYPE 
+0

根本的な問題は、列名が科学的表記法としてレンダリングされていたことです。それらには「e ##」(092 ** e60 ** b78f7804 ** e86 ** ea9a6e83701a929)があるためです。バッククォート(またはプロバイダ固有の引用符が必要なもの)の列名を含むことは、そのままの名前を渡して分析されていませんでした。 –

関連する問題