Augus
Augus

Reputation: 495

select max codeigniter

Im trying to get an max value with codeigniter from an table but it isnt working. This is the error i get:

Severity: 4096

Message: Object of class CI_DB_mysql_result could not be converted to string

Filename: database/DB_active_rec.php

Line Number: 427

This is my function:

public function getPeriodeNummer($bedrijf_id) {
    $this->db->select_max('id');
    $this->db->where('bedrijf_id', $bedrijf_id);
    $result = $this->db->get('rapporten');

    $this->db->select('periode_nummer');
    $this->db->where('rapporten_id', $result);
    $query = $this->db->get('statistieken_onderhoud');

    $data = $query + 1;

    return $data;
}

What im trying to do is as followed:

  1. Select the highest id where bedrijf_id = $bedrijf_id from rapporten.
  2. Select the periode_nummer from statistieken_onderhoud where rapporten_id = the highest id i got from step 1.
  3. Add 1 to the periode_nummer i got from step 2 and return that number.

Thanks in forward for your help!

Upvotes: 6

Views: 80125

Answers (6)

pgrono
pgrono

Reputation: 798

Shortest:

$this->db->select_max('id', 'max_id')->get('video_processing')->row();

Upvotes: 0

Maicol Romero
Maicol Romero

Reputation: 9

$this->db->select_max('id', 'max_id');
$query = $this->db->get('video_processing');

return $query->row();

try the above:

Upvotes: 1

Santosh Pandey
Santosh Pandey

Reputation: 131

Try this:

    $this->db->select_max('display_sequence');
    $this->db->from('acl_menu');
    $query = $this->db->get();
    $r=$query->result();

Display Sequence is your column name & acl_menu is your table name.

Upvotes: 2

stealthyninja
stealthyninja

Reputation: 10371

Try

public function getPeriodeNummer($bedrijf_id) {
    $this->db->select_max('id');
    $this->db->where('bedrijf_id', $bedrijf_id);
    $res1 = $this->db->get('rapporten');

    if ($res1->num_rows() > 0)
    {
        $res2 = $res1->result_array();
        $result = $res2[0]['id'];

        $this->db->select('periode_nummer');
        $this->db->where('rapporten_id', $result);
        $query = $this->db->get('statistieken_onderhoud');

        if ($query->num_rows() > 0)
        {
            $row = $query->result_array();
            $data['query'] = 1 + $row[0]['periode_nummer'];
        }

        return $data['query'];
    }

    return NULL;
}

Upvotes: 18

mirza
mirza

Reputation: 5793

You can't use an object as a string. Use this:

public function getPeriodeNummer($bedrijf_id) {
    $this->db->select_max('id');
    $this->db->where('bedrijf_id', $bedrijf_id);
    $result = $this->db->get('rapporten');

    $this->db->select('periode_nummer');
    $this->db->where('rapporten_id', $result);
    $query = $this->db->get('statistieken_onderhoud');
    // fetch first row in object
    $result = $query->row();
    $data = $result + 1;

    return $data;
}

Upvotes: 1

gustyaquino
gustyaquino

Reputation: 767

I think the $query variable is holding a mysql result resource and it cannot be used as a String or in this case an Integer.

You could try this way:

$data = mysql_result($query,0) + 1;

Upvotes: 0

Related Questions