具有关联数组的 pdo bindParam
pdo bindParam with associative array
我正在尝试使用关联数组绑定参数,通过 foreach 循环,但我无法以某种方式使其工作。我收到此错误:
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
这是代码。 var $columns
和 $values
也来自数组,经过处理后它像 x, x, x
和 :x, :x, :x
一样接受它们
$stmt1 = $conn->prepare("INSERT INTO data($columns)
VALUES ($values)");
foreach ($array as $key => $value)
{
$key = ":" . $key;
$stmt1->bindParam($key, $value);
$stmt1->execute();
}
我很确定列正在处理数组中的键。
编辑:更多代码
$values = '';
$columns = implode(',', $array);
foreach($array as $key)
{
$values .= ":" . $key . ",";
}
$values = substr($values , 0, -1);
您在每次迭代中都调用了 execute,因此只有一个实际绑定的变量被触发。
不用循环,只需将数组传递给 execute
$stmt1 = $conn->prepare("INSERT INTO data($columns) VALUES ($values)");
$stmt1->execute($array);
报错是因为你每次迭代都在执行查询,但是一开始就因为报错停止了。当它确实在第一次迭代中执行时,您实际上只绑定了一个变量和一个标记,因此计数是错误的并且您得到了错误。您只需要将执行移出循环
foreach ($array as $key => $value) {
$key = ":" . $key;
$stmt1->bindParam($key, $value);
}
$stmt1->execute();
我正在尝试使用关联数组绑定参数,通过 foreach 循环,但我无法以某种方式使其工作。我收到此错误:
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
这是代码。 var $columns
和 $values
也来自数组,经过处理后它像 x, x, x
和 :x, :x, :x
$stmt1 = $conn->prepare("INSERT INTO data($columns)
VALUES ($values)");
foreach ($array as $key => $value)
{
$key = ":" . $key;
$stmt1->bindParam($key, $value);
$stmt1->execute();
}
我很确定列正在处理数组中的键。
编辑:更多代码
$values = '';
$columns = implode(',', $array);
foreach($array as $key)
{
$values .= ":" . $key . ",";
}
$values = substr($values , 0, -1);
您在每次迭代中都调用了 execute,因此只有一个实际绑定的变量被触发。
不用循环,只需将数组传递给 execute
$stmt1 = $conn->prepare("INSERT INTO data($columns) VALUES ($values)");
$stmt1->execute($array);
报错是因为你每次迭代都在执行查询,但是一开始就因为报错停止了。当它确实在第一次迭代中执行时,您实际上只绑定了一个变量和一个标记,因此计数是错误的并且您得到了错误。您只需要将执行移出循环
foreach ($array as $key => $value) {
$key = ":" . $key;
$stmt1->bindParam($key, $value);
}
$stmt1->execute();