
![]() |
Здравствуйте Гость ( Вход | Регистрация ) |
|
|
|
![]() ![]() ![]() |
![]() |
|||||
![]() ![]() Пользователь ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 54 Пользователь №: 28574 На форуме: Карма: 1 ![]() |
Не получается найти решение проблеме.
Собственно дело вот в чём. Нужно сделать запрос на добавление записи в таблицу. Делается это у меня примерно так: $value1="значение1"; До поры до времени всё шло нормально, пока в значениях "значение1" и "значение2" не начали появляться символы ' " и , В итоге весь запрос ломается. Например, если $value1="Vladimir Krasnopol'skii, Valerii Uskov"; то строка запроса будет выглядеть так: INSERT INTO table_name (val1,val2) values (Vladimir Krasnopol'skii, Valerii Uskov, значение2) Тут в запрос вкрапляется запятая, которая на самом деле входит в значение поля. Если обрамлять апострофами, то опять же запрос ломается из-за присутствующих в значении '. То же и с кавычками. Существуют ли какие-то функции, с помощью которых можно экранировать все эти символы, чтобы они не участвовали в запросе? Пробовал так: $value1=htmlspecialchars("значение1"); //не трогает ни кавычки не запятые Спустя 26 минут, 22 секунды (24.01.2012 - 23:33) golovolom написал(а):
Я так и делаю, это в премере я переменные сразу в запрос вписал без сложения строк. Тем более корректно хавает и берёт именно значения а не имена переменных. Это я знаю что такой запрос ппц. Просто у меня не 2 поля а около 10ти добавляется и строчка запроса страшно выглядит в такой форме, я пока что укоротил для удобства. Но дело не в этом Сейчас попробую с mysql_real_escape_string Спустя 4 минуты, 49 секунд (24.01.2012 - 23:38) Winston написал(а): Упс, сразу не заметил, что у тебя mysqli Попробуй так переписать
Спустя 3 минуты, 1 секунда Winston написал(а):
Для этого нужно форматировать запрос фот так Свернутый текст $value1="значение1"; Спустя 6 минут, 51 секунда (24.01.2012 - 23:45) golovolom написал(а): Спасиб большое, $mysqli->real_escape_string пашет) Спустя 3 дня, 9 часов, 18 минут, 43 секунды (28.01.2012 - 09:04) golovolom написал(а): Опять проблемка.. почему-то не проходят запросы с минусами. Например: В поле field таблицы содержится значение 'Я - минус. да я минус'. делаем такой запрос: $val = "Я -"; В итоге всё проходит нормально. Получаем новое значение поля field 'Ты - минус. да я минус', и запрос выглядел вот так UPDATE table SET `field` = REPLACE( `field`, 'Я -', 'Ты -') Но если значение $val равно "Я - минус", то запрос почему-то не проходит, видимо минус тут как арифметическое действие воспринимается, а real_escape_string его не трогает. Не могу понять что в таком случае делать. Пробовал $val = addCslashes($val, "-"); после real_escape_string, получается 3 слэша перед минусом если вывести запрос на экран. Как заэкранировать все знаки, которые могут как-то повлиять на корректность запроса? В частности, чтобы проходили запросы вида UPDATE table SET field2 = 'Сам ты - минус' WHERE `field` LIKE '%Я - минус%' -------------------- Я не помню, как пьяный вчера это писал
|
||||
![]() |
![]() ![]() ![]() |