如何获取最后插入的id,然后将其分配给全局变量

时间:2014-04-11 21:45:53

标签: php codeigniter grocery-crud

我想获取最后插入的id,然后将其分配给全局变量以便以后使用它。

我使用callback_after_insert作为以下内容:

$crud->callback_after_insert(array($this, '_callback_get_lastInsertID'));

function _callback_get_lastInsertID($post_array,$primary_key) {
   $this->lastInsertedId = $primary_key;
}

然后,当使用$this->lastInsertedId获取其值时,但我找不到存储的任何值。

function featured_ad_offer() { 
    echo $this->lastInsertedId; 
    @$data['content'] .= $this->load->view('featured_ad_offer', '', true); 
    $this->load->view('index', $data); 
}

有一条错误消息说Undefined property: Content::$lastInsertedId

现在,怎么做?

3 个答案:

答案 0 :(得分:0)

在“声明”类本身之后,请在课堂上尝试declaring你的变量(假设两个函数都在同一个类中),即

class Blog extends CI_Controller {
    private $lastInsertedId = NULL;

    public function fcn1() {$this->lastInsertedId = 3.14;}
    public function fcn2() {var_dump($this->lastIndertedId);}

}

如果您真的想将其用作global variable,则需要在CI_Controller中声明它,或者更好地在/core/Public_Controller中创建扩展CI_Controller的文件,然后让所有控制器不是CI_Controller而是Public_Controller扩展,因此您可以轻松声明“全局”变量。

有关扩展使用此tutorial by Phil的详细信息。

如果您遇到麻烦,请user guide link

还有另一种选择(不推荐!)config class

$this->config->set_item('item_name', 'item_value'); //setting a config value
$this->config->item('item name'); //accesing config value

答案 1 :(得分:0)

也许您可以使用它来获取最后插入的ID

$this->db->insert_id();

将其存储在会话中

$this->load->library('session');
$this>session->set_userdata('last_inserted_id');

并在其他地方使用此会话变量

$last_inserted_id = $this->session->userdata('last_inserted_id');

希望得到这个帮助:D

答案 2 :(得分:0)

使用Codeigniter会话可以轻松解决您需要的解决方案。例如,您可以做的是:

$crud->callback_after_insert(array($this, '_callback_get_lastInsertID'));

function _callback_get_lastInsertID($post_array,$primary_key) {
   $this->session->set_userdata('last_insert_id', $primary_key);
}

确保先加载session class。最好的方法是在自动加载中实际拥有会话库。

现在再次实际调用last_insert_id,您只需调用:

即可
echo $this->session->userdata('last_insert_id');

因此,在您的示例中,您可以轻松完成:

function featured_ad_offer() { 
    echo $this->session->userdata('last_insert_id'); 
    @$data['content'] .= $this->load->view('featured_ad_offer', '', true); 
    $this->load->view('index', $data); 

}