# 1064 - у вас ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL для правильного синтаксиса - PullRequest
2 голосов
/ 27 декабря 2011

Я хочу создать таблицу, используя следующий скрипт:

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

РЕДАКТИРОВАТЬ: я использовал вкладку sql в phpMyAdmin

Что я могу сделать?

Ответы [ 4 ]

5 голосов
/ 27 декабря 2011

Первая ошибка, которую я вижу, состоит в том, что timestamp не имеет длины.Итак, эта строка:

time timestamp(14),

должна быть такой:

time timestamp,
1 голос
/ 27 декабря 2011

Вы используете PHP в месте, которое ожидает простой SQL (обратите внимание, что в OP указано «Я использовал вкладку sql в phpMyAdmin»). Сократите это до:

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

И @Aurelio прав, нет параметра длины для отметки времени.

0 голосов
/ 27 декабря 2011

Вы можете объявить весь текст перед передачей его функции:

    $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);
0 голосов
/ 27 декабря 2011

Дайте свое сообщение об ошибке, вы каким-то образом облажались, так что вызов PHP mysql_query обрабатывается как строка, а затем напрямую передается в mysql_query (). Возможно, это вызвано несбалансированным ' в предыдущей строке.

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

В правильно построенной строке запроса никогда не будет буквального вызова функции PHP.

Если вы передаете скрипт PHP в mysql непосредственно из командной строки, например,

$ mysql < somescript.php

это тоже не будет работать. MySQL не будет выполнять этот скрипт. Он попытается загрузить исходный текст кода буквально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...