如何使用条件更新多个数据

时间:2018-06-28 05:13:09

标签: php codeigniter

我要使用条件(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;
    }
}

1 个答案:

答案 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;
    }
  }
}