簡體   English   中英

PHP創建表錯誤1064

[英]PHP create table error 1064

我試圖在mySQL中創建一個表。 這是我下面的php頁面,當我運行頁面時沒有錯誤但是表格不在mySQL中,當我在mySQL中測試代碼時我得到了錯誤

#1064 - 您的SQL語法有錯誤; 檢查與MySQL服務器版本對應的手冊,以便在第1行的“$ user =”root“'附近使用正確的語法。

我已經對這個錯誤意味着什么做了一些研究,但我沒有在哪里。 我真的不明白這意味着什么。 如果我是誠實的我真的不懂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>

你需要轉義int1int2 它們是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)
)

您的列名有問題

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)
)

您正在為列名使用保留字。 檢查以下鏈接到mysql參考:

http://dev.mysql.com/doc/refman/5.7/en/reserved-words.html

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

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

你不能把<?php?>之間的所有東西放到mysql中。 這是PHP的一部分。 在PHP中,您將連接到MYSQL服務器並向該服務器發送查詢。 我認為你確實拿走了所有內容,因為你的錯誤near '$user = "root"' at line 1指定了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)
)

一旦你這樣做,juergen的答案可能適用:轉義int1int2 ,將它們改為`int1``int2`以逃避保留關鍵字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM