2013-04-30 5 views
1

Я хочу сгореть запрос на базе:знак процента в PHP строку

$query="SELECT field1 from table_name where field2 like '%".$_REQUEST['var1']."%'"; 

Страница показывает ошибку внутреннего сервера .

Во время отладки I echo $ query. Это было как:

SELECT field1 from table_name where field2 like 'value_of_var1%' 

Где делает первый знак процента пошел? Я искал в Интернете, некоторые сказали, что я должен поставить знак двойного процента (%%), чтобы избежать знака процента. Если да, то почему второй знак процента не нужно бежать?

Этот код (запрос) выполняется на странице AJAX, чтобы отлаживать, я открыл эту страницу AJAX по URL-адресу. Это показывает идеальный результат

SELECT field1 from table_name where field2 like '%value_of_var1%' 

Но когда страница вызывается через AJAX он показывает без первого знака процента. Не могли бы вы помочь мне понять, в чем проблема?

+1

Вам нужно указать urlencode, так как «%» уже является «стартовым кодом» любого urlencoded char. Например, '% 20' превратится в пробел. – dognose

+0

Попробуйте эту более простую форму '$ query =" SELECT field1 из table_name, где field2, как '% {$ _ REQUEST [' var1 ']}% ";'. Таким образом, вам не нужно иметь дело с конкатенацией строк. –

+1

Посмотрите исходный код HTML веб-страницы в своем браузере. Как отображается ваш запрос? Вы все еще замечаете недостающие символы? – Jocelyn

ответ

2

Спасибо за ваш ответ. Моя проблема была, $_REQUEST['var1'] был номер. % обрабатывается по HTML. Для ошибки 500, это было ошибкой в ​​моем коде.

0

Назначьте значение переменной.

$variable = $_REQUEST['var1']; 
$query = "SELECT field1 from table_name where field2 like '%".$variable."%'"; 

Этот вопрос был протестирован и его работа.

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