SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 29.01.2009 18:01:36

lvp
Участник
Зарегистрирован: 29.01.2009
Сообщений: 3

#1064 - You have an error in your SQL syntax - помогите найти ошибку

#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 ''ak'='1', 'name'='2', 'rang'='3', 'fights'='4', 'forces'='5', 'wellness'='6', 'l' at line 1

Эта ошибк возникает, при запросе:

INSERT INTO `er_army` SET 'ak'='1', 'name'='2', 'rang'='3', 'fights'='4', 'forces'='5', 'wellness'='6', 'levels'='7', 'xp'='8', 'strength'='9', 'country'='10', 'region'='11'

Сначала из кода вставлял, думал код неверне.. потом уже стал проверять напрямую из phpMyAdmin - тоже самое - таже ошибка.
Изначально был запрос с VALUE и перечислением... сейчас в поисках решения запрос видоизменился на использование SET.
Не могу понять, че ему синтаксис не нравится sad


ПРИМЕЧАНИЕ МОДЕРАТОРА
Всем новичкам, прежде чем писать свой вопрос об ошибке 1064, ознакомьтесь с кратким списком рекомендаций по решению проблемы.

1. Неправильные кавычки. Одинарные кавычки обозначают строковую константу. Применение их к именам колонок или таблиц приведет к ошибке синтаксиса (как в примере выше). Имена колонок и таблиц нужно заключать в обратные кавычки (там где бкува ё на клавиатуре).

2. TEXT, DATE, DAY, ORDER и многие другие - ключевые слова. Использование их в качестве имен колонок или таблиц без обратных кавычек приведет к ошибке.
Для верности можно все имена колонок и таблиц заключать в обратные кавычки.

3. Обратите внимание на структуру сообщения об ошибке:
... to use near ' здесь кусок запроса с того места где начинается ошибка ' at line 1

Это означает, что если кусок цитируемого запроса начинается:
а) со слов SELECT, INSERT, UPDATE, DELETE, скорее всего у вас не закрыт предыдущий запрос ( нет ; после него).
б) со слова TYPE, ваша версия уже не поддерживает это ключевое слово и вместо него нужно писать ENGINE
в) если цитируемый кусок запроса на первый взгляд не содержит ошибок, то нужно смотреть на весь запрос целиком. Вероятно ранее в запросе что-нибудь пропущено из-за чего цитируемый кусок оказывается не на своем месте и воспринимается как ошибка.

Обычно движок сайта кроме сообщения об ошибке печатает и запрос в котором она произошла. Если этого нет, то вам нужно лезть в скрипт, который формирует страницу и править его, чтобы отображался полностью запрос.

Если в запросе что-нибудь пропущено, например, две подряд запятые (между которыми должно стоять значение) или  конструкция вида (`имя колонки`=, ) значит ваш скрипт написан криво и нужно искать место в скрипте где формируется запрос и почему там пустые переменные.

UPD:
Полный список рекомендаций смотрите в статье 1064 you have an error in your sql syntax Статья написана по итогам многочисленных обсуждений на форуме и регулярно обновляется, поэтому освещает аспекты возникновения mysql error 1064.

Неактивен

 

#2 29.01.2009 18:23:34

Lem0nti
Гуру
Откуда: Северная Пальмира
Зарегистрирован: 08.11.2007
Сообщений: 98

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

set используется для обновления, а не для вставки. Придётся вернуть на values.

Отредактированно Lem0nti (29.01.2009 18:23:58)

Неактивен

 

#3 29.01.2009 18:27:29

lvp
Участник
Зарегистрирован: 29.01.2009
Сообщений: 3

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

#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 ''er_army' (ak,name,rang,fights,forces,wellness,levels,xp,strength,country,region' at line 1

Всеравно error sad

INSERT INTO 'er_army' (ak,name,rang,fights,forces,wellness,levels,xp,strength,country,region) VALUES ('1','2','3','4','5','6','7','8','9','10','11')

Неактивен

 

#4 29.01.2009 18:35:23

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

Ну а тут кавычки поставили вокруг имени таблицы не правильные. Бэктики должны быть (там, где ё).

P.S. Кстати, в первом случае вокруг имен полей тоже бэктики надо было ставить.

Неактивен

 

#5 29.01.2009 18:37:57

lvp
Участник
Зарегистрирован: 29.01.2009
Сообщений: 3

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

Спасибо, запрос заработал

INSERT INTO er_army (ak,name,rang,fights,forces,wellness,levels,xp,strength,country,region) VALUES ('1','2','3','4','5','6','7','8','9','10','11')

Неактивен

 

#6 22.02.2010 19:21:02

viktor6
Участник
Зарегистрирован: 22.02.2010
Сообщений: 3

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

ребята помогите из за просом  старый запрос был такой

b := rs.FormatQuery('INSERT INTO '+DBRec.table1+' (BanCreate, HDDSN, Name, IPAddr, BanTime, Reason, SteamId, UUID) '+
                          'VALUES (%s,%s,%s,%s,%d,%s,%s,%s)', [SqlDT2Str(p^.DateTime), p^.HddSN, p^.Name, p^.IPAddr, p^.min, p^.Reason, p^.SteamId, p^.UUID]);

я решил сменить этот запрос на другую базу сделал так

b := rs.FormatQuery('INSERT INTO '+DBRec.table1+' (player_id,player_ip,player_nick,admin_ip,admin_id,admin_nick,ban_type,ban_reason,ban_created,ban_length,server_name,server_ip, SteamId, UUID) '+
                        'VALUES (%s,%s,%s,'''','''',''MyAC'',''S'',%s,%d,%d,''MyAC Anticheat'','''')', [p^.HddSN, p^.IPAddr, p^.Name, p^.Reason, SqlDT2Str(p^.DateTime), p^.min, p^.SteamId, p^.UUID]);

мне пишет такое
"#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 '' at line 1"

Неактивен

 

#7 23.02.2010 03:24:23

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

А почему Вы вдруг решили править формат, а не аргументы, которые
тут нужно править по смыслу?

Подозреваю, что формат сам добавляет кавычки, и MySQL обижается,
что Вы экранируете непойми что smile

Неактивен

 

#8 23.02.2010 20:32:31

viktor6
Участник
Зарегистрирован: 22.02.2010
Сообщений: 3

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

потому что я новичек в этом деле smile и не знаю как делать
всех с праздником

Отредактированно viktor6 (23.02.2010 20:33:03)

Неактивен

 

#9 13.03.2010 13:55:01

Selebro
Участник
Зарегистрирован: 13.03.2010
Сообщений: 2

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

Код:

#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 'key = `002` LIMIT 0, 30' at line 1

пишет такую ошибку при запросе

Код:

SELECT * FROM `table` WHERE key = `002`

причем зачем-то добавляет после моего запроса LIMIT 0 , 30. Объясните в чем ошибка и че за лимит такой.( ковычки где key ставил и где ё и где э) кодировку пробывал менять поля key(оно в формате varchar(25)) на utf-8 изначально было 1251_general_ci

Неактивен

 

#10 13.03.2010 14:00:34

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

key - ключевое слово. Его нужно брать в обратные кавычки

SELECT * FROM `table` WHERE `key` = '002'

Неактивен

 

#11 13.03.2010 14:21:08

Selebro
Участник
Зарегистрирован: 13.03.2010
Сообщений: 2

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

smile)) слона то и не заметилsmile огромное спасибо очень быстро среагировали.

Неактивен

 

#12 18.03.2010 17:11:49

r.e.d.
Участник
Зарегистрирован: 18.03.2010
Сообщений: 5

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

помогите побороть
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 ')' at line 1 1064
Запрос
$add_to_base = 'INSERT INTO '.$userlog.' (login,date,zayavka,blank,us1,us2,us3,us4,us5,us6,us7,summa,komment,otkaz) VALUES ('.$userlog.','.$today.','.$zayavka.','.$blank.','.$_POST['us1'].','.$_POST['us2'].','.$_POST['us3'].','.$_POST['us4'].','.$_POST['us5'].','.$_POST['us6'].','.$_POST['us7'].','.$summa.','.$komment.','.$otkaz.')';

причем методом исключения, я выяснил, что если удалить из запроса первое поле, то все в базу добавляется, а если убрать все кроме первого поля, то пишет что типа unknown column in field list , что за фигня не пойму???
переименовывал колонки, переменные и тд не помогает sad

Неактивен

 

#13 18.03.2010 18:37:28

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

Вы выведите запрос целиком, после подстановки переменных, тогда станет
понятно, что Вы реально отправляете, и в чем проблема.

Неактивен

 

#14 19.03.2010 01:36:50

bee
Участник
Зарегистрирован: 19.03.2010
Сообщений: 1

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

$dots = '...';
    $sql = ' PREPARE statement FROM
    "SELECT DISTINCT p.product_id, p.name,
                     IF(LENGTH(p.description) <= ?,
                        p.description,
                        CONCAT(LEFT(p.description, ?),
                               '.$dots.')) AS description,
                     p.price, p.discounted_price, p.thumbnail
     FROM            product p
     INNER JOIN      product_category pc
                       ON p.product_id = pc.product_id
     INNER JOIN      category c
                       ON pc.category_id = c.category_id
     WHERE           (p.display = 2 OR p.display = 3)
                     AND c.department_id = ?
     ORDER BY        p.display DESC
     LIMIT           ?, ?";                                             

  SET @p1 = :short_product_description_length;
  SET @p2 = :short_product_description_length;
  SET @p3 = :department_id;
  SET @p4 = :start_item;
  SET @p5 = :products_per_page;

  EXECUTE statement USING @p1, @p2, @p3, @p4, @p5;
Ошибка :
SQLSTATE[42000]: Syntax error or access violation: 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 '..)) AS description,
                     p.price, p.discounted_price, p.thumbna' at line 5
Подскажите что не так

Неактивен

 

#15 19.03.2010 09:55:59

r.e.d.
Участник
Зарегистрирован: 18.03.2010
Сообщений: 5

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

вот так это выглядит
$userlog = $_POST['hiden_login'];//скрытое поле формы, получает из другой формы(select)
$today = date("y-m-d");
$zayavka = $_POST['zayavka'];//int формы
$blank = $_POST['blank'];//int формы
$us1 = ($_POST['us1']*1425);
$us2 = ($_POST['us2']*750);
$us3 = ($_POST['us3']*1500);
$us4 = ($_POST['us4']*500);
$us5 = ($_POST['us5']*1500);
$us6 = ($_POST['us6']*1000);
$us7 = ($_POST['us7']*750);
$summa = ($us1+$us2+$us3+$us4+$us5+$us6+$us7);
$komment = $_POST['komment'];//varchar
$otkaz = $_POST['otkaz'];//chekbox 1 или 0

$connect = mysql_connect("localhost","root") or die ("can't connect:<br>\n" . mysql_error());
  echo "<br>\n connected successfully <br>\n";
  mysql_select_db ('mydb',$connect) or die ("cant select data base <br>\n" . mysql_error());
  echo "<br>\n data base selected <br>\n";
  //добавление данных в бд
if($_POST['add_button']){ //submit
        echo "<br>\n Ваш сумма: ", $summa; //проверка получена ли переменная
        echo "<br>\n Ваш логин: ", $userlog; //проверка получена ли переменная

$add_to_base = 'INSERT INTO '.$userlog.' (id,log,today,zayavka,blank,us1,us2,us3,us4,us5,us6,us7,summa,komment,otkaz) VALUES (,'.$userlog.','.$today.','.$zayavka.','.$blank.','.$_POST['us1'].','.$_POST['us2'].','.$_POST['us3'].','.$_POST['us4'].','.$_POST['us5'].','.$_POST['us6'].','.$_POST['us7'].','.$summa.','.$komment.','.$otkaz.')';

mysql_query($add_to_base) or die ("<br>\n cant insert in data base <br>\n" . mysql_error());

cant insert in data base
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 'brulevae,10-03-19,12345678,123456,1,0,0,0,0,0,0,1425,,)' at line 1

Отредактированно r.e.d. (19.03.2010 10:02:54)

Неактивен

 

#16 19.03.2010 11:53:07

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

VALUES (,'.$userlog.','

Запятая после открывающей скобки лишняя.

Неактивен

 

#17 19.03.2010 12:11:28

r.e.d.
Участник
Зарегистрирован: 18.03.2010
Сообщений: 5

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

если ее убрать, пишет

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 ')' at line 1 1064

я ее поставил чтоб было видно остальные переменные

сейчас перепробовав все подряд, добился того, что на синтаксис он больше не ругается, но теперь пишет
Unknown column 'brulevae' in 'field list' (это первое значение в запросе, если его удалить, то пишет следующее значение)
ваще не понимаю что за байда,
версия MySQL 5.0.45

Неактивен

 

#18 19.03.2010 12:20:26

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

Понял. вы кавычки неправильно ставите. У вас в php
'INSERT INTO ... VALUES ('.$userlog.',
подставляются переменные, объединяется строка и получается запрос
INSERT INTO ... VALUES (brulevae,
кавычек нет, следовательно brulevae имя столбца.

Неактивен

 

#19 19.03.2010 12:25:22

r.e.d.
Участник
Зарегистрирован: 18.03.2010
Сообщений: 5

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

ээээ а какие нужно, я уже все вариации перепробовал, но всеравно спасибо за наводку

Неактивен

 

#20 19.03.2010 12:28:37

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

"INSERT INTO ... VALUES ('".$userlog."',

Неактивен

 

#21 19.03.2010 13:00:24

r.e.d.
Участник
Зарегистрирован: 18.03.2010
Сообщений: 5

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

$add_to_base_otkaz = 'INSERT INTO '.$userlog.' (`log`,`zayavka`,`komment`)
VALUES ('.$userlog.','.$zayavka.','.$komment.')';

cant insert in data base
Unknown column 'brulevae' in 'field list'

$add_to_base_otkaz = 'INSERT INTO '.$userlog.' (`zayavka`,`komment`)
VALUES ('.$zayavka.','.$komment.')';

а так работает

ни чо не понимаю, походу проблема в первой переменной, но не пойму в чем она....
может потому, что  нельзя оду и туже переменную  использовать как имя  таблицы и как значение?

всем спасибо разобрался, понял, что в двойные кавычки нужно заключать все что будит записываться в поля типа varchar, а в остальных не нужно, долго до меня это доходило )))

Отредактированно r.e.d. (19.03.2010 13:13:01)

Неактивен

 

#22 19.03.2010 15:11:37

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

Там еще bee вклинивался (а мог бы создать отдельную тему, да wink )

bee написал:

$dots = '...';
<cut>
                        CONCAT(LEFT(p.description, ?),
                               '.$dots.')) AS description,

Экранировать кавычки не забывайте.

Неактивен

 

#23 02.04.2010 14:44:16

Tigerfox
Участник
Зарегистрирован: 02.04.2010
Сообщений: 2

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

Ну помогите пожалуйста, сделал сайт на Joomla 1,5. На локалке экспортировал базу в phpMyAdmin 2.6.1 - файл пересохранил в кодировке utf8. Кидаю базу на хостинг 1gb.ru (там phpMyAdmin 2.6.2)  выдает такую вот ошибку:

ERROR 1064 (42000) at line 1: 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 'яЛП
CREATE TABLE `bak_banner` (
  `bid` int(11) NOT NULL auto_increment,
  `cid`' at line 1

Замучился, что делать то, я вообще в базах ноль. Подскажите новичку как исправить? Могу прислать базу (300 кб).

P.S. Попробывал еще двух сайтов базы кинуть созданные на локалке та же ошибка. Что за синтакс на локалке phpMyAdmin 2.6.1 делает не так при экспорте??? Что его хостинг не понимает...

Отредактированно Tigerfox (02.04.2010 14:52:04)

Неактивен

 

#24 02.04.2010 15:55:02

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

Попробуйте не пересохранять файлы, возможно, это наведенная ошибка от
пересохранятора. Ну или можете удалить строчку «яЛП» из дампа и попро-
бовать залить его еще раз.

Неактивен

 

#25 19.04.2010 23:23:14

swow73
Участник
Зарегистрирован: 19.04.2010
Сообщений: 1

Re: #1064 - You have an error in your SQL syntax - помогите найти ошибку

Доброго времени суток!
у меня вот тоже трабла)))

кароч, при дампе базы выдает такую ошибку

Error occured at:2010-04-19 21:53:19
Line no.:3531
Error Code: 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 ('72,0,,1.01,1,0,72,0,383,4010460307),(857042,0,0,6,1.01,115,216.44,0,0,0,0,6,1.01') at line 1

если поможете решить, спасибо за ранее)

Отредактированно swow73 (19.04.2010 23:24:07)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson