【发布时间】:2011-01-07 11:33:04
【问题描述】:
我正在处理使用 PDO 类创建的一系列查询,在某些情况下,我的查询需要相同的参数。 我创建了一个用于保存数据的 foreach 语句中的数组,但一些变量来自外部,我可以在一个查询中使用这两个数据吗?
例子:
// $connection is the PDO object;
// $full_data contains:
// $full_data[$i]["address"]
// $full_data[$i]["phone"]
// $full_data[$i]["email"]
// $full_data[$i]["user_id"]
// $full_data[$i]["surname"] // not used but present
// $full_data[$i]["name"] // not used but present
$sql = "UPDATE users_table SET city = :address, phone = :phone, email = :email, admin_id = :admin_id, admin_name = :admin_name WHERE user_id = :user_id";
$statement = $connection->prepare ($sql);
$statement->bindParam (':admin_id', trim($admin_id), PDO::PARAM_INT);
$statement->bindParam (':admin_name', trim($admin_name), PDO::PARAM_STR);
foreach ($full_data as $value) {
$ok = $statement->execute ($value);
$num = $statement->rowCount ();
}
} catch (PDOException $e) {
return $e->getMessage ();
}
此页面返回错误:
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
究竟是什么问题,在 UPDATE 语句中该技术有效
【问题讨论】: