mysql реальная escape-строка с LIKE, не приносящая никакого результата

#php #mysql #mysql-real-escape-string

#php #mysql #mysql-real-escape-string

Вопрос:

У меня есть запрос mysql

 mysql_query("SELECT name,symbol FROM scode WHERE change='$change' 
AND product='$product' AND series='$typeo' 
AND (name LIKE '%$check%' OR symbol LIKE '%$check%') LIMIT 5");
 

Это работает отлично, но если я попытаюсь использовать тот же запрос, используя строку mysql, то запрос не вернет никакого результата.
я пробовал так

 $query= sprintf("SELECT name,symbol FROM `scode` WHERE change='%s' 
AND product='%s' AND series='%s' AND (name LIKE '%s' OR symbol LIKE '%s') 
LIMIT 5",
mysql_real_escape_string($change),
mysql_real_escape_string($product),
mysql_real_escape_string($typeo),
mysql_real_escape_string($check),
mysql_real_escape_string($check));

$fetch= mysql_query($query);
 

Как я могу составить запрос, который будет работать? Кто-нибудь может мне помочь? Спасибо.

Комментарии:

1. На самом деле вы не показали нам, как выглядит любой запрос.

2. вы когда-нибудь слышали о разделении кода на несколько строк? как это должно быть прочитано? прокручивая милю?

3. @JellyBelly нет ошибки, просто запрос не возвращает никакого результата.

4. @Col. Shrapnel извините за проблему редактирования сообщения

5. Попробуйте выполнить печать $query после запуска через ваш sprintf() вызов и посмотрите, как это выглядит. Сравните это с рабочей версией запроса, и вы увидите, в чем проблема.

Ответ №1:

Ну, нет, это не сработает, потому что в первом вы делаете a LIKE %term% , во втором вы делаете a LIKE term . Попробуйте добавить %% примерно так:

 $query= sprintf("SELECT name,symbol FROM `scode` WHERE change='%s' AND product='%s' AND series='%s' AND (name LIKE '%%%s%%' OR symbol LIKE '%%%s%%') LIMIT 5",mysql_real_escape_string($change),mysql_real_escape_string($product),mysql_real_escape_string($typeo),mysql_real_escape_string($check),mysql_real_escape_string($check));

$fetch= mysql_query($query);
 

Ответ №2:

Добавьте это в конец вашего mysql_query, и он покажет вам, что такое сообщение об ошибке

   $fetch= mysql_query($query) or die(mysql_error());
 

Ответ №3:

Я проверил это и обнаружил одну проблему. Похоже, mysql пытается проанализировать столбец «изменить» в качестве ключевого слова. Попробуйте вставить слово «изменить» в `.