phpcodeigniterselectquery-builderresultset

Codeigniter Active Record return type


I tried to get a umat_id with this SQL query :

SELECT umat_id FROM msumat WHERE nama = $nama

I converted this SQL query into CI's Active Record :

$this->db->select('umat_id');
$terdaftar = $this->db->get_where('msumat', array('nama' => $nama));

So this query should return a string (example : "John").

But I got an error when I tried to echo it : Object of class CI_DB_mysql_result could not be converted to string

I have tried something like this : echo (string)$terdaftar;, but it's not working.

All I want is to echo "John"

EDIT Just said I want to insert "John" into a variable. How to do that?

$john = ????

Solution

  • As some of the users already pointed the solution, I'm only explaining why you did get this error so you can understand better the querying results that codeigniter gives.

    This error:

    But I got an error when I tried to echo it : Object of class CI_DB_mysql_result could not be converted to string

    Happens because you were trying to echo an object.

    This piece of code

    $terdaftar = $this->db->get_where('msumat', array('nama' => $nama));
    

    Will return an object, this object will have information about the query you've done. With this object you can get the result(rows) as objects doing this:

    $results = $terdaftar->result();
    

    Or you if you feel more comfortable with arrays you can return the results(rows) as an array doing this:

    $results = $terdaftar->result_array();
    

    You can also get the number of results doing this:

    $number_results = $terdaftar->num_rows()
    

    And this is just an example you can read more about the results here http://ellislab.com/codeigniter/user-guide/database/results.html

    EDIT A better explanation: imagine that we use the result_array() function to get the result in a pure array format:

    $results = $terdaftar->result_array();
    

    Now your variable $results is an array, to iterate through it and get the data you want you'll do something like this:

    foreach ($results as $key => $row) {
        //the row variable will have each row of your database returned by your query
        //so if you want to access a field from that row, 
        //let's say for example the name field. You would do something like this
        if($row['name']=='John')
            echo $row['name'];
    
    }