Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codeigniter 解析csv以更新表时where子句中的未知列_Codeigniter_Codeigniter 2 - Fatal编程技术网

Codeigniter 解析csv以更新表时where子句中的未知列

Codeigniter 解析csv以更新表时where子句中的未知列,codeigniter,codeigniter-2,Codeigniter,Codeigniter 2,我正在解析CSV文件以将记录添加到表中。我就是这样做的 public function parse_csv($file) { $this->load->library('CSVReader'); $csvData = $this->csvreader->parse_file($file); foreach($csvData as $key => $row) { $data_n[$key]

我正在解析CSV文件以将记录添加到表中。我就是这样做的

public function parse_csv($file) {

        $this->load->library('CSVReader');
        $csvData = $this->csvreader->parse_file($file);


        foreach($csvData as $key => $row) {
            $data_n[$key] = array(
                'mf_date' => $row['mf_date'],
                'mf_student_id' => $row['mf_student_id'],
                'mf_sender' => $row['mf_sender'],
                'mf_amount' => $row['mf_amount'],
                'mf_trx_id' => $row['mf_trx_id'],
                );
            $this->db->insert('monthly_fee', $data_n[$key]);
            $this->student_model->update_monthly_due($row['mf_student_id'], $row['mf_amount']);
        }
    }
我希望更新另一个有三列的表

1)md_student_id //unique
2)md_due
3)md_paid
我想在上传csv时更新该表,其中mf_student_id和md_student_id与下面的模型函数匹配

public function update_monthly_due($mf_student_id, $mf_amount)
    {   
        $this->db->select('mf_student_id');
        $this->db->from('monthly_fee');
        $this->db->join('monthly_due', 'monthly_due.md_student_id = monthly_fee.mf_student_id');
        $sql = "UPDATE monthly_due set md_due = md_due - " . $mf_amount . ", md_paid = md_paid + " . $mf_amount . " WHERE md_student_id = " . $mf_student_id;
        $this->db->query($sql);
    }
但当我上传csv时,它会产生以下错误

Error Number: 1054

Unknown column 'MCS20145B41' in 'where clause'

UPDATE monthly_due set md_due = md_due - 5500, md_paid = md_paid + 5500 WHERE md_student_id = MCS20145B41

Filename: F:\xampp\htdocs\student\system\database\DB_driver.php

Line Number: 330
我做错了什么


提前感谢

您应该按如下方式替换此行

$sql = "UPDATE monthly_due set md_due = md_due - " . $mf_amount . ", md_paid = md_paid + " . $mf_amount . " WHERE md_student_id = '" . $mf_student_id . "'";

注意这一行的结尾

为什么不使用CI的活动记录而不是原始SQL查询
正确的方式进行操作。这一点如下:

更改此项,

$sql = "UPDATE monthly_due set md_due = md_due - " . $mf_amount . ", md_paid = md_paid + " . $mf_amount . " WHERE md_student_id = " . $mf_student_id;
$this->db->query($sql);
$this->db->where('md_student_id', $mf_student_id);
$this->db->set('md_due', "md_due - $mf_amount", FALSE);
$this->db->set('md_paid', "md_paid + $mf_amount", FALSE);
$this->db->update('monthly_due');
到,

$sql = "UPDATE monthly_due set md_due = md_due - " . $mf_amount . ", md_paid = md_paid + " . $mf_amount . " WHERE md_student_id = " . $mf_student_id;
$this->db->query($sql);
$this->db->where('md_student_id', $mf_student_id);
$this->db->set('md_due', "md_due - $mf_amount", FALSE);
$this->db->set('md_paid', "md_paid + $mf_amount", FALSE);
$this->db->update('monthly_due');

说明:

之所以这样做,是因为第三个(可选)FALSE参数告诉CodeIgniter不要使用backticks(')保护生成的查询。这意味着生成的SQL将是:

UPDATE monthly_due set md_due = md_due - 5500, md_paid = md_paid + 5500 WHERE md_student_id = "MCS20145B41"