将数组插入数据库时是否有最佳做法?我过去已经成功使用了foreach循环,以及各种数组函数。有没有更好的办法?
以下是示例代码:
public function InsertRequests($id) {
$db = Database::getHandler();
$selected_requests = $this->GetRequests($this->allrequests);
foreach($selected_requests as $requestid) {
$sql = "INSERT INTO requests (userid,requestid,date) VALUES (?,?,NOW())";
$stmt = $db->prepare($sql);
$stmt->bindParam(1,$id,PDO::PARAM_STR);
$stmt->bindParam(2,$requestid,PDO::PARAM_STR);
$stmt->execute();
}
return true;
}
}
答案 0 :(得分:1)
您可以使用单个查询插入多个记录,如下所示:
INSERT INTO TABLENAME ( fieldOne, fieldTwo, fieldThree ) VALUES
( 'Jack', 'Nickholson', 'M' ),
( 'Audrey', 'Hepburn', 'F' ),
( 'Salvador', 'Dali', 'M' )
...
因此,准备INSERT语法在常规循环中使用自定义查询构建器迭代数据数组,而不是执行一次。更好的做法是使用像@ Karoly所说的ORM库。