有些不对劲
$this->db->where("Mark_ID,(SELECT Mark_ID FROM mark WHERE Course_ID=$Course_ID && Matric_No=$Matric_No)");
在我的模特中?有任何建议吗?谢谢。
function update_record($Course_ID,$Matric_No)
{
if($Course_ID && $Matric_No != NULL)
{
$data = array(
//'Course_ID' => $this->input->post('Course_ID'),
'Matric_No' => $this->input->post('Matric_No'),
'Student_Name' => $this->input->post('Student_Name'),
'Result_Mark_1' => $this->input->post('Result_Mark_1'),
'Result_Mark_2' => $this->input->post('Result_Mark_2'),
'Result_Mark_3' => $this->input->post('Result_Mark_3'),
'Result_Mark_4' => $this->input->post('Result_Mark_4'),
'Result_Mark_5' => $this->input->post('Result_Mark_5')
);
$this->db->where("Mark_ID,(SELECT Mark_ID FROM mark WHERE Course_ID=$Course_ID && Matric_No=$Matric_No)");
$this->db->update('mark', $data);
}
}
答案 0 :(得分:2)
您需要使用IN()
子句
$subquery="SELECT Mark_ID FROM mark WHERE Course_ID=$Course_ID && Matric_No=$Matric_No";
$this->db->where("Mark_ID IN($subquery)",null,FALSE);
但是您使用同一个表中的子查询进行更新,您将面临
的错误您无法在更新查询中指定目标表
为此,您需要为子查询提供新别名,例如
$subquery="SELECT t.Mark_ID FROM(
SELECT Mark_ID
FROM mark
WHERE Course_ID=$Course_ID && Matric_No=$Matric_No
) t ";
$this->db->where("Mark_ID IN($subquery)",null,FALSE);
答案 1 :(得分:0)
我建议您忘记嵌套查询,让您的生活更轻松。如果您仍想使用嵌套查询,则上面发布的答案是正确的。您需要使用 IN
function update_record($Course_ID,$Matric_No)
{
if($Course_ID && $Matric_No != NULL)
{
$data = array(
//'Course_ID' => $this->input->post('Course_ID'),
'Matric_No' => $this->input->post('Matric_No'),
'Student_Name' => $this->input->post('Student_Name'),
'Result_Mark_1' => $this->input->post('Result_Mark_1'),
'Result_Mark_2' => $this->input->post('Result_Mark_2'),
'Result_Mark_3' => $this->input->post('Result_Mark_3'),
'Result_Mark_4' => $this->input->post('Result_Mark_4'),
'Result_Mark_5' => $this->input->post('Result_Mark_5')
);
// pre update query
$this->db->select('Mark_id');
$this->db->where('Course_ID', $Course_ID);
$this->db->where('Matric_No', $Matric_No);
$tmp_result = $this->db->get();
$result = $tmp_result->row();
$mark_id = $result->Mark_id;
//updation
$this->db->where("Mark_ID",$mark_id);
$this->db->update('mark', $data);
}
}
答案 2 :(得分:0)
我认为您可以使用以下代码获取结果。
$这 - > DB->选择(" Mark_id&#34);
$这 - > DB-化合物其中(" COURSE_ID",$ COURSE_ID);
$ get_id = $ this-> db-> get($ this-> tbl_user) - > row();
获取标记ID后,只需将其传递给下面的查询。
$ this-> db-> where(' Mark_id',$ get_id-> Mark_id);
$这 - > DB->更新($这 - > tbl_user,$数据);