我正在尝试将数组内容添加到数据库中。因为我正在使用
$arr = ["10","11","12","13"];
foreach ($arr as $value) {
$sql = "INSERT INTO `test` (user_id, view) VALUES (:user_id, :view)";
$stmt = $this->conn->prepare($sql);
$stmt->bindParam(':user_id', $value);
$stmt->bindParam(':view', 'small');
$stmt->execute();
}
是好的做法还是坏的?还有其他好方法吗?
答案 0 :(得分:6)
正确的例子是这样的:
$arr = ["10","11","12","13"];
$sql = "INSERT INTO `test` (`user_id`, `view`) VALUES (:user_id, :view)";
$stmt = $this->conn->prepare($sql);
foreach ($arr as $value) {
$stmt->execute(array('user_id' => $value, 'view' => 'small'));
}
答案 1 :(得分:3)
您可以随时使用数组execute()
:
$stmt->execute(array('user_id' => $value, 'view' => 'small'));
这通常可以最大限度地减少您的代码,并且还允许您在构建查询时通过if
子句累积数据,而不必使代码复杂化。
同样,@ u_mulder指出,您只需要prepare
一次查询,因为它不会在该循环的每次迭代中发生变化。