#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 пытается проанализировать столбец «изменить» в качестве ключевого слова. Попробуйте вставить слово «изменить» в `.