При передаче именованных параметров формы :name
to PDOStatement::bindParam()
, похоже, работает, используется ли ведущий двоеточие.
т.е. либо это:
$statement->bindParam(':name', $var);
или это:
$statement->bindParam('name', $var);
похоже работа.
Вот документация для PDOStatement::bindParam()
параметр
Идентификатор параметра. Для подготовленного оператора с использованием именованных заполнителей это будет имя параметра формы : name. Для подготовленного заявления с использованием заполнителей вопросительных знаков это будет 1-индексированная позиция параметра.
Означает ли это, что двоеточие можно остановить?
Нет, поскольку в документации не упоминается об этом, я думаю, что можно с уверенностью предположить, что это поведение официально не поддерживается и на него нельзя положиться.
Однако на самом деле это действительно работает (по крайней мере, в PHP 5.3.24) – внутренне двоеточие будет добавлено к параметру, если оно отсутствует ( см. ext/pdo/pdo_stmt.c:363
в исходном коде PHP 5.3.24 ) ,