使用PDO将数组插入数据库的最佳实践

时间:2017-03-01 19:49:08

标签: php mysql pdo

我正在尝试将数组内容添加到数据库中。因为我正在使用

$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();
}

是好的做法还是坏的?还有其他好方法吗?

2 个答案:

答案 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一次查询,因为它不会在该循环的每次迭代中发生变化。