Reputation: 473
I've got database that have Challenge,Level and Course tables like this:
| ID | course_ID | Level_nbr
| ID | Level_ID | Challenge_nbr |
class course_model extends CI_Model{
function get_level_id($course_id,$level_nbr)
{
$this->db->select('ID');
$this->db->where('Course_ID',$course_id);
$this->db->where('Level_nbr',$level_nbr);
$query = $this->db->get('Level');
return $query->row();
}
function get_challenge_id($course_id,$level_nbr,$challenge_nbr)
{
$level_id=$this->get_level_id($course_id,$level_nbr);
$this->db->select('ID');
$this->db->where('Level_ID',$level_id);
$this->db->where('Challenge_nbr',$challenge_nbr);
$query = $this->db->get('Challenge');
return $query->row();
}
function get_challenge($course_id,$level_nbr,$challenge_nbr)
{
$challenge_id=$this->get_challenge_id($course_id,$level_nbr,$challenge_nbr);
$this->db->select('Title,Text,Points,Init_Code');
$this->db->where('ID',$challenge_id);
$query = $this->db->get(`Challenge`);
return $query->row();
}
}
and when I call function in controller like this
$query = $this->course_model->get_challenge(1,$level,$challenge)
I've got this error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND Challenge_nbr
= '2'' at line 4
Upvotes: 1
Views: 59
Reputation: 5332
What you get with $query->row()
is an object so you need to return the ID property of that object.
function get_level_id($course_id,$level_nbr)
{
$this->db->select('ID');
$this->db->where('Course_ID',$course_id);
$this->db->where('Level_nbr',$level_nbr);
$query = $this->db->get('Level');
return $query->row()->ID;
}
function get_challenge_id($course_id,$level_nbr,$challenge_nbr)
{
$level_id=$this->get_level_id($course_id,$level_nbr);
$this->db->select('ID');
$this->db->where('Level_ID',$level_id);
$this->db->where('Challenge_nbr',$challenge_nbr);
$query = $this->db->get('Challenge');
return $query->row()->ID;
}
function get_challenge($course_id,$level_nbr,$challenge_nbr)
{
$challenge_id = $this->get_challenge_id($course_id,$level_nbr,$challenge_nbr);
$this->db->select('Title,Text,Points,Init_Code');
$this->db->where('ID',$challenge_id);
$query = $this->db->get('Challenge');
return $query->row(); // this will return you an object too
}
Upvotes: 1