我想在PHP中使用codeignitor框架同时执行多个插入查询。有一些简单的方法可以在不编写多个插入查询的情况下执行此操作。已经尝试过像 $ this-> db-> query('INSERT INTO students(first_name,last_name)VALUES ('teejay','obazee')' ('maev','shadowsong')' ('jaina','骄傲')','FALSE) 有这样的方法。哪个不行。如果有人知道的话,请帮助我。
答案 0 :(得分:9)
您可以使用codeigniter native activerecord
$data = array(
array(
'first_name' => 'teejay', 'last_name' => 'obazee'
),
array(
'first_name' => 'maev', 'last_name' => 'shadowsong'
),
array(
'first_name' => 'jaina', 'last_name' => 'proudmore'
)
);
$this->db->insert_batch('students', $data);
它会产生查询
INSERT INTO students (first_name,last_name) VALUES ('teejay', 'obazee'),('maev', 'shadowsong'),('jaina', 'proudmore');
答案 1 :(得分:3)
我在CodeIgniter中发送多个查询也遇到了问题。
在您的特定情况下,您可以在一个INSERT查询中发送多行,但在许多其他情况下,这是不可能的,因为您有不同的命令(例如LOCK TABLE... SELECT... INSERT... UPDATE... UNLOCK TABLES
)
在codeigniter中,您应该使用:
mysqli_multi_query($this->db->conn_id, $sql);
我甚至不知道答案,答案最初是由Kumar(https://stackoverflow.com/users/523794/kumar)在Codeigniter - how to run multiple/batch queries?发表的评论
注意:您必须在 /application/config/database.php
中将数据库驱动程序设置为mysqli
希望它有所帮助。
答案 2 :(得分:2)
不幸的是,您需要执行以下操作:
$this->db->query("INSERT INTO `students` (`first_name`,`last_name`) VALUES ('teejay', 'obazee'),('maev', 'shadowsong'),('jaina', 'proudmore')");
或使用其他人的类来构建查询: http://codefury.net/2009/12/insert-multiple-rows-into-a-database-with-codeigniter/