Luc*_*bro 2 mysql codeigniter insert
相关代码:
$sql = "INSERT INTO rel_attivita_corsi(id_attivita,id_corso) VALUES";
foreach($elements as $element) {
$sql .= "('".$element."','1'),";
}
$sql = substr($sql,0,-1);
if (!$this->db->query($sql)) {
echo "FALSE";
}
else {
echo "TRUE";
}
echo $this->db->last_query();
Run Code Online (Sandbox Code Playgroud)
表结构:
rel_attivita_corsi
-----------------------------
ID (int) primary
id_attivita (int)
id_corso (int)
Run Code Online (Sandbox Code Playgroud)
我正在使用codeigniter,你可以看到,最后一个原始返回正确的查询,但数据库中的表保持为空...运行phpmyadmin中返回的查询一切正常.
有任何想法吗?
更新1 - 使用活动记录:
$dati = array();
foreach($elements as $element){
$dati[] = array('id_attivita' => $element, 'id_corso' => 1);
}
if (!$this->db->insert_batch("rel_attivita_corsi",$dati)) {
echo "FALSE";
}
else {
echo "TRUE";
}
echo $this->db->last_query();
Run Code Online (Sandbox Code Playgroud)
没有成功,上次查询打印正确但没有插入发生
更新2 - 使用活动记录,没有foreach:
$this->db->insert_batch("rel_attivita_corsi",array(array('id_attivita' => 7,'id_corso' => 1),array('id_attivita' => 9,'id_corso' => 1)));
Run Code Online (Sandbox Code Playgroud)
没有成功......
我现在用真实替换假值,$elements数组是:
Array
(
[0] => 7
[1] => 9
)
Run Code Online (Sandbox Code Playgroud)
更新3 问题解决了...在删除表中的每个记录插入的代码之后还有另一个查询,因此表始终为空
如果您对代码流程有疑问,请尝试使用分析
我认为你循环错误:
$sql .= "('".$element."','1'),";
Run Code Online (Sandbox Code Playgroud)
这会产生 (value,1), (value, 1) , (value, 1)
你需要的时候
(value,value,value)
Run Code Online (Sandbox Code Playgroud)
ma che te lo dico a poare poi:P
所以你的查询是:
INSERT INTO table(ID,id_activity,id_cont) VALUES (somenthin,1), (somenthing,1) etc ..
Run Code Online (Sandbox Code Playgroud)
而你需要
INSERT INTO table(ID,id_activity,id_cont) VALUES (value,value,value) ;
Run Code Online (Sandbox Code Playgroud)
你可以试试这个:
$sql = "INSERT INTO table(id_activity,id_cont) VALUES (".implode(',',$elements)."); ";
if (!$this->db->query($sql)) {
echo "FALSE";
}
else {
echo "TRUE";
}
echo $this->db->last_query();
Run Code Online (Sandbox Code Playgroud)
在你的情况下,你正在尝试进行INSERT BATCH检查它所说的Codeigniter文档:
$data = array(
array(
'title' => 'My title' ,
'name' => 'My Name' ,
'date' => 'My date'
),
array(
'title' => 'Another title' ,
'name' => 'Another Name' ,
'date' => 'Another date'
)
);
$this->db->insert_batch('mytable', $data);
// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'), ('Another title', 'Another name', 'Another date')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23358 次 |
| 最近记录: |