准备好的语句中的占位符如何调用关联数组中的值?

How a placeholder in a prepared statement calls a value in an associative array?

代码已经可以运行了,但我无法完全理解占位符是如何调用关联数组的值的。我已经阅读了文档,但没有成功理解它。

$app['dtb'] -> insert('users', [
    'name' => $_POST['name']
    'age' => $_POST['age],  ]);`

我的插入方法:

$sql = sprintf(
    'insert into %s (%s) values (%s)',
    $table,
    implode(', ' , array_keys($parameters)),
    ':' . implode(', :' , array_keys($parameters))
);

所以这会导致这样的结果:

insert into users (name) values (:name)

如果我没有使用任何 bind_param 它如何识别 :name 是键 name 的值?

bind_param 是一个 mysqli 函数。该驱动程序不支持命名占位符。您必须使用 PDOPDO 具有类似的 bindparam 功能。它还允许您将数组传递给 execute 函数。如果使用未命名的占位符 (?),这将按它们出现的顺序绑定值,或者如果占位符被命名 (:...),则按数组的键绑定值。我猜你正在将 $parameters 传递给 execute 函数。