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

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

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

Вы не зашли.

#1 14.02.2012 09:52:15

Tony_59
Участник
Зарегистрирован: 29.04.2009
Сообщений: 5

Error INSERT-а. Не вывожу уже

Привет всем! Че-то поиск поюзал, ничего что могло бы помочь не нашел. Есть у меня база, есть к ней запрос. Запрос работает если запустить его вот непосредственно сейчас, но иногда, когда мы просим добавить в базу новость у нас генерится 1064-ая ошибка. Вот собственно сама генерируемая ошибка:


*Database error:* Invalid SQL: INSERT INTO dr_news (cdate, list_id, title, img, intro, body, visible) VALUES
('2012-02-13 07:49:45', '1', 'title', '/images/gudak.jpg', 'intro', 'body', '1')
*MySQL Error*: 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 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ansi-language: RU;
mso-fare' at line 1)
Session halted.

Подскажите пожалуйста, в чем тут может быть проблема? Запрос работает, все выполняется. И новости именно вот с этим запросом добавляется практически всегда. Не работает это исключительно когда добавляет заказчик.

Неактивен

 

#2 14.02.2012 10:57:35

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

Re: Error INSERT-а. Не вывожу уже

Вы не производите экранировку спец символов, поэтому когда новость содержит, например, кавычку как это происходит у заказчика часть 'body' превращается в 'что-то'что-то' и возникает ошибка синтаксиса.

http://docs.php.net/manual/en/function.addslashes.php

Неактивен

 

#3 14.02.2012 13:35:19

Tony_59
Участник
Зарегистрирован: 29.04.2009
Сообщений: 5

Re: Error INSERT-а. Не вывожу уже

Вот полный текст ошибки. Есть вот такие кавычки «» но они ведь вот этим '' вообще никак мешать не должны. Да и проблема еще и в том, что если я сейчас попробую вставить эту новость - она вставится. При условии что запрос остается такой же. Как с этим вообще жить?


*Database error:* Invalid SQL: INSERT INTO dr_news (cdate, list_id, title, img, intro, body, visible) VALUES
('2012-02-13 07:49:45', '1', 'Поддержка и развитие малого и среднего предпринимательства', '/images/gudak.jpg', '', '

13.01.2012 состоялась встреча председателя Новосибирского областного регионального отделения Общероссийской общественной
организации«Деловая Россия» сначальником департамента промышленности, инноваций и предпринимательства мэрии
г.Новосибирска - Владимиром Андреевичем Афанасьевым, председателем комитета поддержки и развития малого и среднего
предпринимательства - Братцевым Вячеславом Геннадьевичем, директором муниципального автономного учреждения города
Новосибирска «Городской центр развития предпринимательства» Казанцевым Егором Александровичем. В ходе встречи были
обсуждены вопросы взаимодействия Новосибирского областного регионального отделения Общероссийской общественной
организации«Деловая Россия» сгородскими структурами поддержки и развития малого и среднего предпринимательства, намечены
пути дальнейшего сотрудничества.

', '1')
*MySQL Error*: 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 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ansi-language: RU;
mso-fare' at line 1)
Session halted.

Неактивен

 

#4 14.02.2012 14:04:53

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

Re: Error INSERT-а. Не вывожу уже

Mysql ругается на запрос, который содержит "Times New Roman'; mso-bidi-font-family: Calibri; mso-ansi-language: RU;
mso-fare"

В приведенном вами запросе таких символов нет, поэтому при попытке его исполнить всё пройдет успешно.
Заказчик, видимо, копирует новость из ворда  и она добавляется с вордовой разметкой - кусок которой мы можем видеть в сообщение об ошибке.

Ошибка в вашем приложении, которое не экранирует спецсимволы и показывает не запрос, который идет к базе и вызывает ошибку, а черти что (это я про "*Database error:* Invalid SQL: INSERT ")

Неактивен

 

#5 15.02.2012 12:41:41

Tony_59
Участник
Зарегистрирован: 29.04.2009
Сообщений: 5

Re: Error INSERT-а. Не вывожу уже

Приложение не наше, оно просто приложение.
Проверил, дело действительно в незаэкранированных спецсимволах. Почему вордовая разметка пропадает я не понял, пробовал запрос делать разными способами, она всегда есть и в коде и в сообщение об ошибке, но да бог с ним. Тут у меня новая штука образовалась: в данный момент сайт есть на внешнем сервере и на внутреннем локальном. На внешнем сервере как раз происходит ошибка, то есть не экранируются символы и вылетает сообщение. На внутреннем же все в полном порядке. То есть символы исправно экранируются как много их не ставь. И вот у меня вопрос: как такое получилось? Скрипты везде одинаковые.

Неактивен

 

#6 15.02.2012 15:08:50

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

Re: Error INSERT-а. Не вывожу уже

Значит плохие скрипты работа которых зависит от настроек базы, php, ajax и т.д.

Неактивен

 

#7 16.02.2012 13:22:31

Tony_59
Участник
Зарегистрирован: 29.04.2009
Сообщений: 5

Re: Error INSERT-а. Не вывожу уже

На сервере в php.ini magic_quotes была выключена. Поставил ей On, все заработало. Спасибо за помощь!

Неактивен

 

#8 16.02.2012 20:17:03

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

Re: Error INSERT-а. Не вывожу уже

Рекомендую посмотреть - http://webew.ru/articles/198.webew

Неактивен

 

Board footer

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