Вурдалак
######
На форуме с: Sep 2009
Cообщений: 580
Город: Москва
 |
Нет, ты понял неправильно 
-~{}~ 11.01.10 03:22:
Кстати, небольшой оффтопик по поводу статьи http://phpfaq.ru/slashes
| |
| Во-вторых, следует обратить внимание на то, что ни одна из функций, добавляющих слеши, не добавляет их к метасимволам поиска "%" и "_", используемым в операторе LIKE. Поэтому, если вы используете этот оператор, и не хотите, чтобы символы _ и % использовались, как маски, то добавляйте слеши вручную. Это можно сделать командой
$data = addCslashes($data, '%_');
Внимание - это не addslashes! В имени этой функции есть дополнительная буква "c".
Таким образом получается, что переменные, используемые в операторе LIKE мы должны обрабатывать отдельно.
сначала заменять один слеш на два, с помощью такого, к примеру, кода:
$var=str_replace('\\','\\\\',$var);
затем (можно наравне со всеми другими данными, идущими в запрос) прослешиваем:
$var=mysql_real_escape_string($var);
а затем, если хотим, чтобы _ и % соответствовали точно самим себе, делаем
$var=addCslashes($var, '_%'); |
|
IMHO, корректнее так:
<?php
$var = addCslashes($var, '_%\\');
$var = mysql_real_escape_string($var);
Ибо сначала мы должны экранировать спец. символы паттерна для LIKE, а уже потом — строковое значение.
Результат один, но всё же, всё же...
Отредактировано Вурдалак 11.01.10 в 00:23
|