слишком мало аргументов - PullRequest
4 голосов
/ 09 декабря 2010

Я делал это много раз прежде, чтобы повторно использовать значение, переданное в функцию sprintf ().Но этот код возвращает сообщение «Предупреждение: sprintf () [function.sprintf]: слишком мало аргументов в ...».

Вот код:

$search_clause = sprintf(" (msgBody LIKE %%%1$s%% OR msgSubject LIKE '%%%1$s%%' ) ", mysql_real_escape_string($match1));

Идеальнозначение $ match1 будет вставлено в сегмент предложения SQL WHERE, показанного выше, - дважды, каждый из которых будет заключен в символы «%» для поиска по шаблону.

Если $ match1 = "test", полученное строковое значение $ search_clause будет:

(msgBody LIKE '%test' OR msgSubject LIKE '%test%' )

Какая очевидная ошибка, которую я совершаю ??

Ответы [ 2 ]

12 голосов
/ 09 декабря 2010

Возможно, $s интерпретируется как переменная (см. расширение переменной ).Попробуйте использовать одинарные кавычки:

$search_clause = sprintf(' (msgBody LIKE "%%%1$s%%" OR msgSubject LIKE "%%%1$s%%" ) ', mysql_real_escape_string($match1));
2 голосов
/ 09 декабря 2010

Просто убегите $ как \$.

$search_clause = sprintf(" (msgBody LIKE %%%1\$s%% OR msgSubject LIKE '%%%1\$s%%' ) ", mysql_real_escape_string($match1));
                                             ^                             ^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...