Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用PDO将阵列插入数据库的最佳实践_Php_Mysql_Pdo - Fatal编程技术网

Php 使用PDO将阵列插入数据库的最佳实践

Php 使用PDO将阵列插入数据库的最佳实践,php,mysql,pdo,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);

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

$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();
}
这是好的做法还是坏的做法?还有其他好方法吗?

您可以始终使用数组执行:

$stmt->execute(array('user_id' => $value, 'view' => 'small'));
这通常会最小化您的代码,并且它还允许您在构建查询时通过if子句积累数据,而不必使代码复杂化


正如@u_mulder所指出的,您只需要准备一次查询,因为它在循环的每次迭代中都不会改变。

正确的例子如下:

$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'));
}
可能重复的