【问题标题】:PHP create table error 1064PHP创建表错误1064
【发布时间】:2013-12-10 11:54:07
【问题描述】:

我正在尝试在 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>

【问题讨论】:

    标签: php mysql syntax-error create-table


    【解决方案1】:

    您需要转义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)
    )
    

    【讨论】:

      【解决方案2】:

      您的列名有问题

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

      【讨论】:

        【解决方案3】:

        您正在使用保留字作为列名。 检查以下指向 mysql 参考的链接:

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

        【讨论】:

          【解决方案4】:

          不要对列名使用任何保留字。您需要更改列名 int1int2 因为它们是保留字。有关更多保留字,请参阅@Alex Vogt 提供的链接。

          【讨论】:

            【解决方案5】:

            你需要了解 PHP 和 SQL 的区别。

            您不能将&lt;?php?&gt; 之间的所有内容都放入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)
            )
            

            一旦你这样做了,juergen d 的答案可能适用:通过将 int1int2 更改为 `int1``int2` 来转义保留关键字。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-12-22
              • 2019-05-03
              • 2018-01-26
              相关资源
              最近更新 更多