为什么 MySQLi 库本身不支持命名参数?
来自 http://php.net/manual/en/mysqli.quickstart.prepared-statements.php 的正确 MySQLi 参数化查询语法:
$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);
在我看来,替换是在API级别实现的合理功能。我很惊讶MySQLi只在库中实现。named parameter
unnamed parameters
有正当理由吗?这对我来说没有意义,因为看到PDO,DQL,ORM如何在他们的查询中采用命名参数。
我希望这不是MySQLi开发人员的“我们懒惰和不想”的情况。我相信一定有一个很好的理由,我正在寻找这个理由,或者一种寻找这个理由的方法。未在 MySQLi 扩展库中实现命名参数的原因。