Mysql codeigniter插入查询正确并已执行,但未执行插入
相关代码:Mysql codeigniter插入查询正确并已执行,但未执行插入,mysql,codeigniter,insert,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 "T
$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();
表格结构:
rel_attivita_corsi
-----------------------------
ID (int) primary
id_attivita (int)
id_corso (int)
正如您所见,我使用的是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();
$this->db->insert_batch("rel_attivita_corsi",array(array('id_attivita' => 7,'id_corso' => 1),array('id_attivita' => 9,'id_corso' => 1)));
$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')
未成功,上次查询打印正确,但未插入
更新2-使用活动记录而不使用foreach:
$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();
$this->db->insert_batch("rel_attivita_corsi",array(array('id_attivita' => 7,'id_corso' => 1),array('id_attivita' => 9,'id_corso' => 1)));
$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')
没有成功
我现在用真值替换假值,$elements
数组是:
Array
(
[0] => 7
[1] => 9
)
更新3
问题解决了。。。代码之后还有一个查询删除了表中插入的每条记录,因此表总是空的
如果您对代码的流程有疑问,请尝试使用我认为您的循环错误:
$sql .= "('".$element."','1'),";
这将产生(值,1),(值,1),(值,1)
当你需要的时候
(value,value,value)
我要买一张票
所以你的问题是:
INSERT INTO table(ID,id_activity,id_cont) VALUES (somenthin,1), (somenthing,1) etc ..
而你需要的是
INSERT INTO table(ID,id_activity,id_cont) VALUES (value,value,value) ;
您可以尝试以下方法:
$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();
如果您正在尝试批量插入,请检查Codeigniter文档,它会显示:
$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();
$this->db->insert_batch("rel_attivita_corsi",array(array('id_attivita' => 7,'id_corso' => 1),array('id_attivita' => 9,'id_corso' => 1)));
$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')
替换代码:
$sql = "INSERT INTO table(id_activity,id_cont) VALUES";
foreach($elements as $element) {
$sql .= "('".$element."','1'),";
}
使用代码:
$sql = "INSERT INTO table(ID,id_activity,id_cont) VALUES";
foreach($elements as $element) {
$sql .= " ('','".$element."','1'),";
}
您能否显示
$sql
包含的内容?附带问题:您是否在某个时候转义/清理$elements
?为什么不使用codeigniters活动记录类来构建sql语句?它看起来更干净,并且在插入值之前对其进行清理(您目前没有这样做)。你能用print\r($element)更新你的问题吗代码>,这样我们就可以告诉你是否做对了!!!