Задавайте вопросы, мы ответим
Вы не зашли.
Привет всем! Че-то поиск поюзал, ничего что могло бы помочь не нашел. Есть у меня база, есть к ней запрос. Запрос работает если запустить его вот непосредственно сейчас, но иногда, когда мы просим добавить в базу новость у нас генерится 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.
Подскажите пожалуйста, в чем тут может быть проблема? Запрос работает, все выполняется. И новости именно вот с этим запросом добавляется практически всегда. Не работает это исключительно когда добавляет заказчик.
Неактивен
Вы не производите экранировку спец символов, поэтому когда новость содержит, например, кавычку как это происходит у заказчика часть 'body' превращается в 'что-то'что-то' и возникает ошибка синтаксиса.
http://docs.php.net/manual/en/function.addslashes.php
Неактивен
Вот полный текст ошибки. Есть вот такие кавычки «» но они ведь вот этим '' вообще никак мешать не должны. Да и проблема еще и в том, что если я сейчас попробую вставить эту новость - она вставится. При условии что запрос остается такой же. Как с этим вообще жить?
*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.
Неактивен
Mysql ругается на запрос, который содержит "Times New Roman'; mso-bidi-font-family: Calibri; mso-ansi-language: RU;
mso-fare"
В приведенном вами запросе таких символов нет, поэтому при попытке его исполнить всё пройдет успешно.
Заказчик, видимо, копирует новость из ворда и она добавляется с вордовой разметкой - кусок которой мы можем видеть в сообщение об ошибке.
Ошибка в вашем приложении, которое не экранирует спецсимволы и показывает не запрос, который идет к базе и вызывает ошибку, а черти что (это я про "*Database error:* Invalid SQL: INSERT ")
Неактивен
Приложение не наше, оно просто приложение.
Проверил, дело действительно в незаэкранированных спецсимволах. Почему вордовая разметка пропадает я не понял, пробовал запрос делать разными способами, она всегда есть и в коде и в сообщение об ошибке, но да бог с ним. Тут у меня новая штука образовалась: в данный момент сайт есть на внешнем сервере и на внутреннем локальном. На внешнем сервере как раз происходит ошибка, то есть не экранируются символы и вылетает сообщение. На внутреннем же все в полном порядке. То есть символы исправно экранируются как много их не ставь. И вот у меня вопрос: как такое получилось? Скрипты везде одинаковые.
Неактивен
Значит плохие скрипты работа которых зависит от настроек базы, php, ajax и т.д.
Неактивен
На сервере в php.ini magic_quotes была выключена. Поставил ей On, все заработало. Спасибо за помощь!
Неактивен
Рекомендую посмотреть - http://webew.ru/articles/198.webew
Неактивен