准备好的语句中的占位符如何调用关联数组中的值?
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
函数。该驱动程序不支持命名占位符。您必须使用 PDO
,PDO
具有类似的 bindparam
功能。它还允许您将数组传递给 execute
函数。如果使用未命名的占位符 (?
),这将按它们出现的顺序绑定值,或者如果占位符被命名 (:...
),则按数组的键绑定值。我猜你正在将 $parameters
传递给 execute
函数。
代码已经可以运行了,但我无法完全理解占位符是如何调用关联数组的值的。我已经阅读了文档,但没有成功理解它。
$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
函数。该驱动程序不支持命名占位符。您必须使用 PDO
,PDO
具有类似的 bindparam
功能。它还允许您将数组传递给 execute
函数。如果使用未命名的占位符 (?
),这将按它们出现的顺序绑定值,或者如果占位符被命名 (:...
),则按数组的键绑定值。我猜你正在将 $parameters
传递给 execute
函数。