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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: SELECT LIKE ESCAPE

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: почему то не работает запрос
ivanm
Отправлено: 27 Марта, 2013 - 08:31:56
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Осуществляется выборка по 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 проверял - работает, но как только в строку попадает спецсимвол - непредвиденные результаты.
 
 Top
DeepVarvar Супермодератор
Отправлено: 27 Марта, 2013 - 09:45:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




 
 Top
ivanm
Отправлено: 27 Марта, 2013 - 09:54:05
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




[quote=DeepVarvar][/quote] с экранированием как раз у меня все нормально! ЗАПРОС НЕ РАБОТАЕТ! тем более что по ваших ссылках : "Замечание: mysql_escape_string() не экраинрует % и _.", "Замечание: mysql_real_escape_string() не экранирует символы % и _."
 
 Top
DeepVarvar Супермодератор
Отправлено: 27 Марта, 2013 - 10:47:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM tbl WHERE fld LIKE '%\%%'
Только не экранируйте сам обратный слеш \
 
 Top
ivanm
Отправлено: 27 Марта, 2013 - 12:34:28
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




[quote=DeepVarvar][/quote]
Большое спасибо. А все гениальное - просто. Надо было просто сделать без ESCAPE
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB