我要使用条件(2个发布值)从数组更新多个数据
$markid=50008; (Post Item)
$ass='Att1';(Post Item)
$data=array( 'regno'=>$regno,'assmark'=>$assmark);
$query="update pre_marks set $ass=$assmark where regno=$regno and markid=$markid" ;
$this->db->query($query);
我的输出应该是
Array
(
[regno] => 210417103001
[Att1] => 58
)
Array
(
[regno] => 210417103002
[Att1] => 23
)
Array
(
[regno] => 210417103003
[Att1] => 20
)
Array
(
[regno] => 210417103004
[Att1] => 45
)
Array
(
[regno] => 210417103005
[Att1] => 25
)
Array
(
[regno] => 210417103006
[Att1] => 0
)
这也很好。但是错误来了
发生数据库错误,错误号:1064
您的SQL语法有错误;检查手册 对应于您的MariaDB服务器版本,以使用正确的语法 在第1行的“ where regno = and markid = 50009”附近
更新pre_marks设置Att1 =其中regno =和markid = 50009
文件名: C:/xampp/htdocs/Admin-Panel/system/database/DB_driver.php
行号:691
如何解决这个问题?
$markid = $this->input->post('markid');
$ass = $this->input->post('sel_ass1');
for($i=12;$i<=$i+6;$i++) {
$regno= $objWorksheet->getCellByColumnAndRow(2,$i)->getValue();
$assmark= $objWorksheet->getCellByColumnAndRow(5,$i)->getValue();
$data=array('regno'=>$regno,$ass=>$assmark);
echo '<pre>';
print_r($data);
echo '</pre>';
$this->db->where(['regno' => $regno,'markid' => $markid]);
$this->db->update('pre_marks',[$ass => $assmark]);
if ($this->db->affected_rows() > 0 ) {
return TRUE;
}
else {
return FALSE;
}
}
答案 0 :(得分:0)
在查询中使用变量之前,您应该检查它们!
if(!empty($markid) && !empty($ass)) {
if(!empty($assmark) && !empty($regno)) {
$this->db->set($ass, $assmark)
->where("regno", $regno)
->where("markid", $markid)
->update("pre_marks");
if ($this->db->affected_rows() > 0 ) {
echo TRUE;
}
else {
echo FALSE;
}
}
}