MySQL реальная escape-строка с LIKE не получает никакого результата - PullRequest
0 голосов
/ 25 октября 2011

У меня есть запрос 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);

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

Ответы [ 3 ]

5 голосов
/ 25 октября 2011

Ну, нет, это не сработает, потому что в первом вы делаете LIKE %term%, во втором вы делаете 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);
1 голос
/ 25 октября 2011

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

  $fetch= mysql_query($query) or die(mysql_error());
0 голосов
/ 25 октября 2011

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

...