我想获取最后插入的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
现在,怎么做?
答案 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);
}