2013-12-10 107 views
0

我想在mySQL中創建一個表。這是我的PHP頁面下方,當我運行的頁面沒有錯誤,但該表不能在MySQL中,當我在MySQL的測試代碼,我發現了錯誤PHP創建表錯誤1064

#1064 - 你有一個錯誤在你的SQL語法中;檢查手冊中 對應於你的MySQL服務器版本正確的語法使用 接近「$用戶=‘根’」在1號線

我已經做了一些研究到這個錯誤是什麼手段但我沒有得到任何地方。我真的不明白這意味着什麼。如果我是誠實的,我不太瞭解PHP我只是調整我以前編寫的uni教程中的代碼。請幫忙。

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Untitled Document</title> 
</head> 

<body> 
<?php 
$user="root"; 
$password=""; 
$database="test"; 

mysql_connect('localhost',$user,$password)or die("Unable to connect to server"); 
mysql_select_db($database) or die("Unable to select database"); 
$query="CREATE TABLE Bookings 
(
id int(6) NOT NULL auto_increment, 
name varchar(25), 
email varchar(35), 
number varchar(20), 
buffet varchar(3), 
ceilidh varchar(5), 
work1 varchar(3), 
beg1 varchar(3), 
int1 varchar(3), 
adv1 varchar(3), 
youth varchar(3), 
lunch varchar(3), 
beg2 varchar(3), 
int2 varchar(3), 
adv2 varchar(3), 
dinner varchar(3), 
dance varchar(5), 
work2 varchar(3), 
lunch2 varchar(3), 
price varchar(5), 
PRIMARY KEY (ID) 
)"; 

mysql_query($query); 
mysql_close(); 

?> 
</body> 
</html> 
+0

謝謝大家回覆!現在通過將int更改爲inter來工作,我想你可能剛剛救了我的下一手! – user3086696

回答

0

你有問題,你的列名(S)

int1s varchar(3), 

int2 varchar(3), 

改變,要別的東西或請將它們用反引號。

就像這個...

CREATE TABLE Bookings 
(
id int(6) NOT NULL auto_increment, 
name varchar(25), 
email varchar(35), 
number varchar(20), 
buffet varchar(3), 
ceilidh varchar(5), 
work1 varchar(3), 
beg1 varchar(3), 
`int1` varchar(3), /* see here... */ 
adv1 varchar(3), 
youth varchar(3), 
lunch varchar(3), 
beg2 varchar(3), 
`int2` varchar(3), /* see here... */ 
adv2 varchar(3), 
dinner varchar(3), 
dance varchar(5), 
work2 varchar(3), 
lunch2 varchar(3), 
price varchar(5), 
PRIMARY KEY (ID) 
) 
2

你需要逃避int1int2。它們是reserved words in MySQL

CREATE TABLE Bookings 
(
    id int(6) NOT NULL auto_increment, 
    name varchar(25), 
    email varchar(35), 
    number varchar(20), 
    buffet varchar(3), 
    ceilidh varchar(5), 
    work1 varchar(3), 
    beg1 varchar(3), 
    `int1` varchar(3), 
    adv1 varchar(3), 
    youth varchar(3), 
    lunch varchar(3), 
    beg2 varchar(3), 
    `int2` varchar(3), 
    adv2 varchar(3), 
    dinner varchar(3), 
    dance varchar(5), 
    work2 varchar(3), 
    lunch2 varchar(3), 
    price varchar(5), 
    PRIMARY KEY (ID) 
) 
0

不要使用任何的保留字列名。您需要更改列名int1int2,因爲它們是保留字。如需更多保留字,請參閱@Alex Vogt提供的鏈接。

0

您需要了解PHP和SQL之間的區別。

你不能把<?php?>之間的所有東西放到mysql中。這是PHP的一部分。在PHP中,您將連接到MYSQL服務器並向該服務器發送查詢。我認爲你做的一切需要,因爲你的錯誤指定near '$user = "root"' at line 1

如果你想測試你的查詢,只需要$query = "";之間的部分,並粘貼在MySQL的測試查詢。

因此,這將只是這一部分:

CREATE TABLE Bookings 
(
id int(6) NOT NULL auto_increment, 
name varchar(25), 
email varchar(35), 
number varchar(20), 
buffet varchar(3), 
ceilidh varchar(5), 
work1 varchar(3), 
beg1 varchar(3), 
int1 varchar(3), 
adv1 varchar(3), 
youth varchar(3), 
lunch varchar(3), 
beg2 varchar(3), 
int2 varchar(3), 
adv2 varchar(3), 
dinner varchar(3), 
dance varchar(5), 
work2 varchar(3), 
lunch2 varchar(3), 
price varchar(5), 
PRIMARY KEY (ID) 
) 

一旦你這樣做,于爾根·D的答案可能適用:將它們變更爲`int1``int2`逃脫保留關鍵字逃避int1int2