Соответствующий синтаксис синтаксиса MySQLi с параметром http://php.net/manual/en/mysqli.quickstart.prepared-statements.php:
$stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (?)");
$stmt->bind_param("i", $id);
Но никогда ничего подобного:
$stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (:id_value)");
$stmt->bind_param("i", "id_value", $id);
Мне кажется, что подстановка named parameter
является разумной функцией, реализуемой на уровне API. Я удивлен, что MySQLi реализовала только unnamed parameters
в библиотеке.
Есть ли веская причина? Для меня это не имеет смысла, потому что все PDO, DQL, ORM все-таки приняли именованные параметры в своих запросах.
Надеюсь, это было не так: "Мы были ленивы и не хотим" со стороны разработчиков MySQLi. Я считаю, что, должно быть, была хорошая причина, и я ищу эту причину или способ поиска этой причины. Причина того, что именованные параметры не реализованы в библиотеке расширений MySQLi.