在这里需要一些帮助,对 PDO 有点不熟悉
我有多个插入
$sql = "INSERT INTO ".$this->form_sql_table." (" . implode(",",$sql_arr_insert) . ") VALUES ".$sql_insert_placeholders.";";
这会产生 INSERT INTO table (col1,col2) VALUES (?,?),(?,?),(?,?)
值数组是
$arr_values = array(
[0] => array(
[0] => 'value 1',
[1] => 'value 2'
),
[1] => array(
[0] => 'value 1',
[1] => 'value 2'
),
[2] => array(
[0] => 'value 1',
[1] => 'value 2'
)
);
格式化数组:
$arr_format = array(
[0] => '?',
[1] => '?'
);
尝试绑定这些但不断收到“绑定变量的数量与令牌的数量不匹配”消息
foreach($arr_values as $pkey => $parr){
$values = array_values($parr);
foreach ( $arr_format as $key => $bind ) {
switch ($bind) {
case '%d':
$stmt->bindValue($key + 1, $values[$key], PDO::PARAM_INT);
break;
case '%s':
default:
$stmt->bindValue($key + 1, $values[$key], PDO::PARAM_STR);
// echo ($key + 1)." - ".$values[$key]."<br>";
// prints out:
// 1 - Value 1
// 2 - Value 2
}
}
}
$stmt->execute();
我在 arr_values 和 arr_format 上回显了 sql,看起来还不错,还有 prin_r。这一切似乎都匹配。
我真的是瞎子还是我在绑定这些时误解了?
希望有人可以在这里帮助我..谢谢
解决了
需要索引“?”的每次出现 从 1 到 '?' 的总数
更新代码:
if($multiarr){
$count = 1;
foreach($arr_values as $pkey => $parr){
$values = array_values($parr);
foreach ( $arr_format as $key => $val ) {
switch ($values[$key]) {
case '%d':
$stmt->bindValue($count, $values[$key], PDO::PARAM_INT);
break;
case '%s':
default:
$stmt->bindValue($count, $values[$key], PDO::PARAM_STR);
}
$count++;
}
}
$stmt->execute();
}