2011-07-03 9 views
1

このコードに何か問題がありますか?MYSQLクエリエラー

You have an error in your SQL syntax; check the manual that corresponds to your MySQL
server version for the right syntax to use near 'desc BLOB, review BLOB, url BLOB)'

は、ここに私のクエリです:

mysql_query("CREATE TABLE videos(
       id INT NOT NULL AUTO_INCREMENT, 
       PRIMARY KEY(id), 
       title VARCHAR(50), 
       desc BLOB, 
       review BLOB, 
       url BLOB 
      ) 
") or die(mysql_error()); 

それは私には大丈夫に見える私はこのエラーを取得しておくMYSQL 5を実行していますよ。最初は私はそれが "BLOB"データ型だと思っていましたが、 "TEXT"を試してみましたが、それでもまだ駄目です。

答えて

5

desc予約キーワードである、あなたはそれをエスケープする必要があります。予約キーワードの完全なリストについては

mysql_query("CREATE TABLE videos(
       id INT NOT NULL AUTO_INCREMENT, 
       PRIMARY KEY(id), 
       title VARCHAR(50), 
       `desc` BLOB, 
       review BLOB, 
       url BLOB 
      ) 
")or die(mysql_error()); 

、と8.3. Reserved Words

+0

:S wow good catch。私は推測していないでしょう。私が 'desc'をクエリすると、もう一度それをエスケープする必要がありますか? –

+0

@ howdy-mcgeeはい、そうです。列には何か別の名前を付ける必要があります。 –

0

試みを参照してください。

mysql_query("CREATE TABLE videos(
       `id` INT NOT NULL AUTO_INCREMENT, 
       PRIMARY KEY(id), 
       `title` VARCHAR(50) NULL, 
       `desc` BLOB NULL, 
       `review` BLOB NULL, 
       `url` BLOB NULL 
      ) 
")or die(mysql_error()); 
1

desc MySQL用のise予約済みキーワードは、バックスティックでカバーする必要があります:

CREATE TABLE videos (
id INT NOT NULL AUTO_INCREMENT, 
`title` VARCHAR(50), 
`desc` BLOB, 
`review` BLOB, 
`url` BLOB, 
PRIMARY KEY (`id`) 
)