2012-10-16 5 views
0

Вопрос, если вы mysql_real_escape_string свою переменную, как она может работать с вами SELECT SQL-запрос. Например:Mysql real escape string и SQL select

В моей строке есть столбец, который содержит значение 's-Gravenmoer. Теперь пользователь вводит значение 's-Gravenmoer, и я сбегу от этого введенного значения для обеспечения безопасности. Тем не менее, строка с колонами , которая содержит значение 's-Gravenmoer, никогда не появится, она добавила слайсы перед одной цитатой. Если есть способ сделать это с mysql_real_escape_string?

Спасибо, ребята! Sander

+1

точки Что это? У вас слишком много ответов с этим на stackoverflow. Посмотрите сначала на информацию об учебнике Stackoverflow: http://stackoverflow.com/tags/php/info или это: http://php.net/language.types.string –

+0

Итак, есть ли в базе данных косые черты? Тогда просто не убегайте дважды. Возможно, вы захотите проверить (прочитайте: отключить) настройку magic_quotes: http://php.net/manual/en/security.magicquotes.php –

+2

http://net.tutsplus.com/tutorials/php/why-you- должен-использовать-phps-pdo-for-database-access/* PDO *, и сэкономить себе некоторые головные боли, это достойный учебник. Это намного безопаснее, и вам не нужно беспокоиться о том, что у вас проблемы с безопасностью на уровне, используя функции * mysql *, которые должны вас беспокоить. – Adam

ответ

6

Вы неправильно понимаете, как избежать данных для использования SQL. Он не постоянно изменяет данные. Подумайте об этом как оберточную бумагу вокруг подарка. Вы делаете подарок некоторых данных в базу данных, и таким образом вы прекрасно ее дополняете (real_escape_string). Как только он достигнет базы данных, сервер БД разворачивает подарок (удаляет экранирование) и помещает «подарок» в свой тайник.

Ни в коем случае не добавлялись обратные косые черты, КОГДА-ЛИБО появляются в сохраненных данных, потому что они удаляются сервером БД, поскольку он выполняет фактическую установку. Эскапады существуют исключительно для обеспечения того, чтобы любые данные, которые вы вставили в запрос, не «ломали» инструкцию SQL, например.

$name = "Miles O'Brien"; // <---note the ' 
$sql = "INSERT INTO people (names) VALUES ('$name')"; 

в результате SQL:

INSERT INTO people (names) VALUES ('Miles O'Brien') 
              ^--- oops, string terminated earlier, what's this "Brien" field/keyword? 

с real_escape_string, ваш запрос выглядит

... VALUES ('Miles O\'Brien') 
        ^^---no longer an SQL string delimiter, treat it like any other char now. 
+0

Я обнаружил, что моя проблема в том, что система добавляет три слэша благодаря блестящей функции под названием «магические кавычки ...». Поработаем над этим, но спасибо за ваш ответ! – user1555076

Смежные вопросы