【发布时间】:2016-08-15 03:20:54
【问题描述】:
根据这个example 对于准备好的语句,我首先绑定参数,然后为参数设置值。
假设我有一个二维数组 $alias
$array1 = [
'id' => 1,
'tstamp' => 123456789,
'alias' => '$alias',
];
$array2 = [
'id' => 1,
'tstamp' => 123456789,
'alias' => '$alias2',
];
$alias = [$array1, $array2];
为什么这段代码有效
$insert = 'INSERT INTO abcdef VALUES (?,?,?)';
$insertStmt = $conn->prepare($insert);
foreach ($alias as $array) {
$insertStmt->bind_param('iis', $array['id'], $array['tstamp'], $array['alias']);
$insertStmt->execute();
}
这不是吗?
$insert = 'INSERT INTO abcdef VALUES (?,?,?)';
$insertStmt = $conn->prepare($insert);
$insertStmt->bind_param('iis', $array['id'], $array['tstamp'], $array['alias']);
foreach ($alias as $array) {
$insertStmt->execute();
}
如果我必须一直绑定参数,那么流量会更多,不是吗?
【问题讨论】:
-
binding 基本上在占位符和绑定变量之间建立了一个引用。当您执行
foreach()时,$array将在每次循环迭代时被删除/重新创建,因此您绑定到循环外的任何内容都将不再存在于循环内。 -
好的,谢谢。如果我有像 $alias 这样的数组,有没有更好的连接方式?
标签: php mysql arrays mysqli prepared-statement