Для базового форматирования:
var template = jQuery.validator.format("{0} is not a valid value");
var result = template("abc");
Ответ находится в документации для bindParam
:
В отличие от PDOStatement :: bindValue (), переменная привязана как ссылка и будет оцениваться только в то время, когда PDOStatement :: execute ( ) называется.
call PDOStatement :: bindParam () для привязки переменных PHP к маркерам параметров: связанные переменные передают свое значение в качестве входных и получают выходное значение, если оно есть, связанных с ними маркеров параметров
Пример:
$value = 'foo';
$s = $dbh->prepare('SELECT name FROM bar WHERE baz = :baz');
$s->bindParam(':baz', $value); // use bindParam to bind the variable
$value = 'foobarbaz';
$s->execute(); // executed with WHERE baz = 'foobarbaz'
или
$value = 'foo';
$s = $dbh->prepare('SELECT name FROM bar WHERE baz = :baz');
$s->bindValue(':baz', $value); // use bindValue to bind the variable's value
$value = 'foobarbaz';
$s->execute(); // executed with WHERE baz = 'foo'
Вот некоторые из них, о которых я могу подумать:
bindParam
вы можете передавать только переменные; не значения bindValue
, вы можете передавать оба (значения, очевидно, и переменные). bindParam
работает только с переменными, потому что он позволяет параметрам быть заданными как ввод / вывод, "ссылка" (и значение не является допустимой "ссылкой" в PHP) : полезно с драйверами, которые (цитируя руководство): поддерживают вызов сохраненных процедуры, которые возвращают данные в качестве вывода параметры, а некоторые также как параметры ввода / вывода, которые оба отправляют в данных и обновляются для их получения.
В некоторых механизмах БД хранимые процедуры могут иметь параметры, которые могут использоваться как для ввода (передача значения из PHP процедуре), так и для вывода (возвращение значения из хранимой процедуры в PHP); чтобы связать эти параметры, вы должны использовать bindParam, а не bindValue.