Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: SELECT LIKE ESCAPE
Форумы портала PHP.SU » » Вопросы новичков » SELECT LIKE ESCAPE

Страниц (1): [1]
 

1. ivanm - 27 Марта, 2013 - 08:31:56 - перейти к сообщению
Осуществляется выборка по SELECT LIKE. Но при вводе могут быть символы % и _ которые надо заэкранировать. Делаю так :
................................ .............
$а = 'куку_';
$replace_symbols = array('%' => '\%', '_' => '\_'); // экранируем спецсимволы поиска
$а = iconv("UTF-8", "UTF-8//IGNORE", strtr($а, $replace_symbols));
$query_string = "SELECT `поле1`, `поле2` FROM `таблица`
LEFT JOIN `таблица2` ON таблица.поле3 = таблица2.id
LEFT JOIN `таблица3` ON таблица.поле4 = таблица3.id
................................ ................................ .............
WHERE таблица.поле5 LIKE '" . $а . "%' ESCAPE '\'
ORDER BY таблица.поле6 desc";
$result_id = mysql_query($query_string, $link);

Экранирование происходит нормально, а вот поиск почему-то не работает, хотя вроди должен. Без ESCAPE проверял - работает, но как только в строку попадает спецсимвол - непредвиденные результаты.
3. ivanm - 27 Марта, 2013 - 09:54:05 - перейти к сообщению
[quote=DeepVarvar][/quote] с экранированием как раз у меня все нормально! ЗАПРОС НЕ РАБОТАЕТ! тем более что по ваших ссылках : "Замечание: mysql_escape_string() не экраинрует % и _.", "Замечание: mysql_real_escape_string() не экранирует символы % и _."
4. DeepVarvar - 27 Марта, 2013 - 10:47:27 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM tbl WHERE fld LIKE '%\%%'
Только не экранируйте сам обратный слеш \
5. ivanm - 27 Марта, 2013 - 12:34:28 - перейти к сообщению
[quote=DeepVarvar][/quote]
Большое спасибо. А все гениальное - просто. Надо было просто сделать без ESCAPE

 

Powered by ExBB FM 1.0 RC1