PDO 在循环数组中绑定参数
PDO bind params in looping array
目前我正在构建与此类似的 PDO 插入:
foreach($r->occurrences as $row) {
$arr[] = array(
'id' => $id,
'name' => $name,
'start' => $row->getTimestamp(),
'end' => $row->getTimestamp() + $duration,
'note' => $notes
);
};
$keys = implode(',', array_keys($arr[0]));
// Format into ('1','2','4'),('8','3','4') for insertion
foreach ($repBkgArr as &$array) {
$array = "('".implode("','", $array)."')";
}
$values = implode(',', $arr);
$query = "INSERT INTO table ($keys) VALUES $values";
$db->execute($query);
在这种情况下,显然我不能只在执行函数的第二个参数中绑定变量,因为我要批量插入几组数据。
$db->execute($query, array(':id' => $id, ':name' => $name);
我该如何处理?我一直在研究一整天,但我似乎无法找到任何适合我情况的东西。
最简单的方法:只需为每个绑定值添加索引前缀,如下所示:
$sql = 'INSERT INTO `tabke`(id, name) VALUES ';
$bind = array();
$sqlRows = array();
foreach ($r->occurrences as $index => $row) {
$sqlRows[] = "(:id_$index, :name_$index)";
$bind[':id_'.$index] = $row['id'];
$bind[':name_'.$index] = $row['name'];
}
print_r($sql.implode(',', $sqlRows)); // QUERY SQL
print_r($bind); // QUERY PARAMS
目前我正在构建与此类似的 PDO 插入:
foreach($r->occurrences as $row) {
$arr[] = array(
'id' => $id,
'name' => $name,
'start' => $row->getTimestamp(),
'end' => $row->getTimestamp() + $duration,
'note' => $notes
);
};
$keys = implode(',', array_keys($arr[0]));
// Format into ('1','2','4'),('8','3','4') for insertion
foreach ($repBkgArr as &$array) {
$array = "('".implode("','", $array)."')";
}
$values = implode(',', $arr);
$query = "INSERT INTO table ($keys) VALUES $values";
$db->execute($query);
在这种情况下,显然我不能只在执行函数的第二个参数中绑定变量,因为我要批量插入几组数据。
$db->execute($query, array(':id' => $id, ':name' => $name);
我该如何处理?我一直在研究一整天,但我似乎无法找到任何适合我情况的东西。
最简单的方法:只需为每个绑定值添加索引前缀,如下所示:
$sql = 'INSERT INTO `tabke`(id, name) VALUES ';
$bind = array();
$sqlRows = array();
foreach ($r->occurrences as $index => $row) {
$sqlRows[] = "(:id_$index, :name_$index)";
$bind[':id_'.$index] = $row['id'];
$bind[':name_'.$index] = $row['name'];
}
print_r($sql.implode(',', $sqlRows)); // QUERY SQL
print_r($bind); // QUERY PARAMS