0

このコードは、問題なく最初のテーブルを作成しますが、2番目のCREATETABLEクエリのエラーである「ErrorQueryingDatabase2」をスローします。構文は正しいように見えますが、私はこれに比較的慣れていません...

$dbc = mysqli_connect("localhost", "$dbuser", "$dbpass") or die('Error connecting to MySQL server.');
mysqli_select_db($dbc, "autoim9_codeaic");

$content = "CREATE TABLE content (id int NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), page varchar(255), html longtext)";
mysqli_query($dbc, $content) or die('Error querying database1');

$events = "CREATE TABLE events (id int NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), name varchar(255), date varchar(255), time varchar(255), location varchar(255), html longtext, img varchar(255), link varchar(255), target varchar(255), order int)";
mysqli_query($dbc, $events) or die('Error querying database2');


$spotlight = "CREATE TABLE spotlight (id int NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), title varchar(255), img varchar(255), link varchar(255), target varchar(255), order int)";
mysqli_query($dbc, $spotlight) or die('Error querying database3');
4

2 に答える 2

2

datetime、およびorderは、MySQL の予約済みキーワードです。名前を変更するか、バッククォート (`) を使用してエスケープする必要があります。

$events = "CREATE TABLE events (id int NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), name varchar(255), `date` varchar(255), `time` varchar(255), location varchar(255), html longtext, img varchar(255), link varchar(255), target varchar(255), `order` int)";

参考までに、すべてのフィールドに使用varchar(255)している場合は、おそらく間違っています。日付と時刻のフィールドには独自のデータ型があり、それに応じて使用する必要があります。

于 2012-05-31T01:14:19.260 に答える
1

"Order" は予約語であるため、バックティックで囲む必要があります (または、少し異なるフィールド名を選択することをお勧めします)。

したがって、実際にはSQLのエラーです。

于 2012-05-31T01:15:51.527 に答える