Подтвердить что ты не робот

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%'
4b9b3361

Ответ 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;