php pdo多数组插入
发布时间:2020-12-13 17:20:56 所属栏目:PHP教程 来源:网络整理
导读:我已经玩了几个小时,试图解决这个问题,但看起来很难解决. 我能够进行单个阵列插入 $person = array('name' = 'Wendy','age' = '32'); 但如果我想要这样的多个: $person = array(array('name'='Dan','age'='30'),array('name' = 'John','age' = '25'),array(
我已经玩了几个小时,试图解决这个问题,但看起来很难解决.
我能够进行单个阵列插入 $person = array('name' => 'Wendy','age' => '32'); 但如果我想要这样的多个: $person = array(array('name'=>'Dan','age'=>'30'),array('name' => 'John','age' => '25'),array('name' => 'Wendy','age' => '32')); 它不工作?任何帮助,将不胜感激. 对于多次插入: public function insertPdo($table,$data){ try{ if (!is_array($data) || !count($data)) return false; $bind = ':' . implode(',:',array_keys($data)); $sql = 'INSERT INTO ' . $table . ' (' . implode(',',array_keys($data)) . ') ' . 'values (' . $bind . ')'; $sth = $this->__dbh->prepare($sql); $result = $sth->execute($data); } catch(PDOException $e){ echo $e->getMessage(); } } 对于单次插入 $person = array('name'=>'Dan','age'=>'30'); $db->insertPdo('test_pdo',$person); // For Multi Insertion,I'm trying to use this in above function foreach ($data as $row) { $result = $sth->execute($row); }; $person = array(array('name'=>'Dan','age' => '32')); $db->insertPdo('test_pdo',$person); 而错误:
解决方法
要利用MySQL(
http://dev.mysql.com/doc/refman/5.0/en/insert-speed.html)中多个插入的插入速度,您可以使用构建较大查询的预准备语句.这确实增加了复杂性,而不是更多的迭代方法,因此可能只适用于高需求系统或大数据集.
如果您拥有上述建议的数据: $person = array(array('name'=>'Dan',array('name' => 'John','age' => '32')); 我们正在寻找生成如下所示的查询: insert into table (name,age) values (?,?),(?,?); 要把它拉到一起,你会想要一些不完全不同的东西: $pdo->beginTransaction() // also helps speed up your inserts $insert_values = array(); foreach($person as $p){ $question_marks[] = '(?,?)'; $insert_values = array_merge($insert_values,array_values($p)); } $sql = "INSERT INTO table_name (name,age) VALUES " . implode(',$question_marks); $stmt = $pdo->prepare ($sql); try { $stmt->execute($insert_values); } catch (PDOException $e){ // Do something smart about it... } $pdo->commit(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |