$this->db->insert_id() not working in mysql codeigniter

我只是一个虾纸丫 提交于 2020-01-01 12:02:50

问题


I am just trying to get the latest auto generated key from the mysql table from codeiginitor. But it is not working some how. I have tried this code
$this->db->insert_id()
as well as
$this->db->mysql_insert_id()
I am getting the following error
Severity: Notice
Message: Undefined property: CI_DB_mysql_driver::$insert_id

is the insert_id function not supported for mysql? How can we make it work?


回答1:


CodeIgniter's insert_id() will only return an ID of an insert(). Unless you are executing something like $this->db->insert('table', $data); before calling the function it will not be able to return an ID.




回答2:


Use only this syntax

$last_id = $this->db->insert_id();

return $last_id; 



回答3:


This is the code I tried to insert the data and get the insert id,

$this->db->insert('table_name',$data); $id = $this->db->mysql_insert_id();

It is not working for me. I have used DB Driver as "mysql". Then I have installed "mysqli" and changed the DB driver name in database.php like,
$db['default']['dbdriver'] = 'mysqli';
Now it is working fine for me.




回答4:


Please check if your table don't have auto increment, primary field then $this->db->insert_id(); will not return anything.




回答5:


assuming you are using active record pattern this should work
$this->db->insert_id()




回答6:


// Store data into array
$data=array('name'=>'Rudra','email'=>'test@gmail.com');

//Insert Data Query
$this->db->insert('tableName',$data);

// Storing id into varialbe
$id = $this->db->insert_id();
return $id;



回答7:


I had the same problem, and found a solution with this link: http://kedyr.wordpress.com/2012/10/03/codeigniter-insert_id/

The solution is not properly a solution, because it's just a way to get around by using the native sql, with the codeigniter method "Query" and dealing with the native sql callback.

    $this->db->insert('references', $data);
    $query = $this->db->query('SELECT LAST_INSERT_ID()');
    $row = $query->row_array();
    $LastIdInserted = $row['LAST_INSERT_ID()'];



回答8:


try this:

$id = $this->db->insert_id()

instead of

$id = $this->db->mysql_insert_id();



回答9:


Try this

$this->db->insert('table_name',$data);
$id = $this->db->mysql_insert_id();



回答10:


Your code will work if you have a code like this :

var $table = 'your table name'
$this->db->insert($this->table,$data1);
        return $this->db->insert_id();

CodeIgniter's insert_id() will only return an ID of an insert(), as mention before, and also you dont forget to settings the DB driver name in database.php like

$db['default']['dbdriver'] = 'mysqli';




回答11:


If you are using ajax to insert data, then print the output you will get the id in response, or if you are using core codeigniter method then use below code.

$last_id = $this->db->insert_id();
return $last_id; 


来源:https://stackoverflow.com/questions/6942216/this-db-insert-id-not-working-in-mysql-codeigniter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!