第一次使用后出现CREATE TABLE错误?

时间:2012-05-31 01:13:12

标签: php mysql

这段代码创建了第一个没有问题的表,但随后抛出了“Error Querying Database 2”,这是第二个CREATE TABLE查询的错误。语法看起来正确,但我对此相对较新...

$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');

2 个答案:

答案 0 :(得分:2)

datetimeorder是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),那么您可能做错了。 Date and time fields have their own data types并且应该相应地使用。

答案 1 :(得分:1)

“订单”是一个保留字,因此您需要将其括在后面(或者最好选择稍微不同的字段名称)。

所以它实际上是SQL中的一个错误。