Правильный 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. библиотека.
MYSQLi не поддерживает именованные параметры, потому что его аналог, PDO, поддерживает. И вы используете тот метод, который лучше всего соответствует вашим потребностям в то время …
Оба были выпущены с PHP 5 (я полагаю, PDO с версией 5.3).
Итак … Вы хотите более быстрое время выполнения? использовать MYSQLi. Вы хотите именованные параметры? использовать PDO.
Вы хотите, чтобы MYSQLi использовал именованные параметры на стороне клиента? ну, теперь вы только что потеряли время выполнения … Я думаю, вы можете видеть, куда это идет …
Других решений пока нет …