我正在寻找使用PHP PDO进行多次插入。php PDO用占位符插入批次多行
最接近的答案,我发现这是一个
how-to-insert-an-array-into-a-single-mysql-prepared-statement
不过的例子,多数民众赞成被赋予的用途?而不是真正的占位符。
我已经看了看PHP文档网站上的例子为占位
php.net pdo.prepared-statements
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);
现在可以说,我想实现上述但有一个阵列
$valuesToInsert = array(
0 => array('name' => 'Robert', 'value' => 'some value'),
1 => array('name' -> 'Louise', 'value' => 'another value')
);
我如何使用PDO和每次交易多次插入?
我想它会开始与循环?
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
foreach($valuesToInsert as $insertRow){
// now loop through each inner array to match binded values
foreach($insertRow as $column => value){
$stmt->bindParam(":{$column}", value);
}
}
$stmt->execute();
然而上述不工作,但希望能证明什么IM努力实现
你需要在循环中执行。否则你只是覆盖绑定的参数,并最终只绑定LAST值。 – 2013-02-25 15:04:27
但是,如果我执行那么这将做一次数据库事务一行?我试图批量执行 – 2013-02-25 15:05:21
是的,但如果你想模拟mysql扩展的'insert ... values(...),(...),(...)'插入语法,这是不是你怎么去做的。您必须预先构建一个查询语句,该语句为您插入的每组值创建一个占位符,然后进行准备,绑定参数,然后执行。您最终只需多次运行一个准备好的插入程序即可完成同样的工作。 – 2013-02-25 15:07:36