$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%'
Ответ 1
... LIKE '%%%s%%'", mysql_real_escape_string('test'));
Чтобы напечатать символ %, вам нужно избежать его самого. Поэтому первые два %% будут печатать символ %, а третий - для спецификатора типа %s. Вам понадобится двойной %% в конце.
Ответ 2
Try:
$test = sprintf("SELECT * FROM `table` WHERE `text` LIKE '%%%s%%'", mysql_real_escape_string('test'));
В sprintf, если вы хотите получить знак %, вам нужно вставить %%. Итак, это %% для первого шаблона %, %s для самой строки и %% для последнего шаблона %.
Ответ 3
Вам нужно избегать знака процента с знаком процента %%.
$test = sprintf("SELECT * FROM `table` WHERE `text` LIKE '%%%s%%'", mysql_real_escape_string('test'));
echo $test;
Ответ 4
Перепутайте контексты. Для согласованности поставьте вещи, которые не входят в одинарные кавычки SQL за пределами строки sprintf():
$test = sprintf(
"SELECT * FROM `table` WHERE"
. "`xt` LIKE '%s'",
"%" . mysql_real_escape_string("test") . "%"
);
Ответ 5
$test = "SELECT * FROM `table` WHERE `text` LIKE '%s%'" . mysql_real_escape_string('test');
echo $test;