#1064 - 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获得正确的语法

时间:2011-12-27 01:59:22

标签: php mysql mysql-error-1064

我想使用以下脚本创建表:

mysql_query("create table `".$mysql_table_prefix."query_log` (
    query varchar(255),
    time timestamp(14),
    elapsed float(2),
    results int, 
    key query_key(query)
)");

它给了我这个错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql_query("create table `".$mysql_table_prefix."query_log` ( query varchar(25' at line 1

编辑:我在phpMyAdmin中使用了sql选项卡

我该怎么办?

4 个答案:

答案 0 :(得分:5)

我看到的第一个错误是timestamp没有长度。所以这一行:

time timestamp(14),

应该是这样的:

time timestamp,

答案 1 :(得分:1)

你在一个需要普通SQL的地方使用PHP(注意OP说“我在phpMyAdmin中使用了sql选项卡”)。切到:

create table `query_log` (
    query varchar(255),
    time timestamp,
    elapsed float(2),
    results int, 
    key query_key(query)
)

@Aurelio是对的,时间戳没有长度参数。

答案 2 :(得分:0)

给出错误信息,你以某种方式搞砸了代码,这样PHP mysql_query调用被视为一个字符串,然后直接传递给mysql_query()。可能是前一行中的不平衡'导致此问题。

... syntax to use near 'mysql_query("create table ...

正确构造的查询字符串永远不会有文字PHP函数调用。

如果要在命令行直接将PHP脚本传递给mysql,例如

$ mysql < somescript.php

这也行不通。 MySQL不会执行该脚本。它将尝试按字面加载原始代码文本。

答案 3 :(得分:0)

您可以在将文本传递给函数之前声明整个文本:

    $params="create table `".$mysql_table_prefix."query_log` (
    query varchar(255),
    time timestamp(14),
    elapsed float(2),
    results int, 
    key query_key(query)
)"

然后只是

mysql_query($params);