MySQL LIKE + php sprintf

$test = sprintf("SELECT * FROM `table` WHERE `text` LIKE '%%s%'", mysql_real_escape_string('test'));

echo $test;

выход:

SELECT * FROM `table` WHERE `text` LIKE '%s

но это должно вывести:

SELECT * FROM `table` WHERE `text` LIKE '%test%'

Ответы на вопрос(5)

Решение Вопроса
... LIKE '%%%s%%'", mysql_real_escape_string('test'));

Чтобы распечатать% Персонажу нужно убегать сам с собой. Поэтому первые два%% напечатает% символ, в то время как третий для спецификатора типа%s, Вам нужен двойной%% в конце также.

 Adam Joseph Looze08 февр. 2015 г., 00:28
Спасибо. Это помогло мне.

Вы смешиваете контексты. Для согласованности поместите вещи, которые не заключены в одинарные кавычки SQL, за пределыSprintf () строка формата:

$test = sprintf(
          "SELECT * FROM `table` WHERE"
            . "`xt` LIKE '%s'",
          "%" . mysql_real_escape_string("test") . "%"
        );
$test = "SELECT * FROM `table` WHERE `text` LIKE '%s%'" . mysql_real_escape_string('test');

echo $test;

Вы должны экранировать знаки процента со знаком процента%%.

$test = sprintf("SELECT * FROM `table` WHERE `text` LIKE '%%%s%%'", mysql_real_escape_string('test'));

echo $test;

Пытаться:

$test = sprintf("SELECT * FROM `table` WHERE `text` LIKE '%%%s%%'", mysql_real_escape_string('test'));

Вsprintf, если вы хотите получить% подписать, вы должны вставить%%, Так что это%% за первый подстановочный знак%, %s для самой строки и%% за последний подстановочный знак%.

Ваш ответ на вопрос