2011-08-04 32 views
5

Estoy tratando de obtener la última clave generada automáticamente desde la tabla mysql del codeiginitor. Pero no está funcionando de alguna manera. He tratado este código
$this->db->insert_id()
, así como
$this->db->mysql_insert_id()
estoy recibiendo el siguiente error
Severity: Notice
Message: Undefined property: CI_DB_mysql_driver::$insert_id

es la función insert_id no se admite para MySQL? ¿Cómo podemos hacer que funcione?

+0

La normal [mysql_insert_id()] (http://ro.php.net/manual/de/function.mysql-insert-id.php) trabajo para usted? – sqwk

+1

Ayudaría a ver dónde está ejecutando la consulta antes de esto. –

+0

@sqwk Puedo obtener Insert id en PHP normal solo después de instalar MySQLi. Supongo que mysql_insert_id solo funcionará con MySQLi. Me pregunto cómo podemos hacer CodeIgnitor para hacer uso de MySQLi –

Respuesta

5

Este es el código traté de insertar los datos y obtener el identificador de inserción,

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

No está funcionando para mí. He usado DB Driver como "mysql". Luego he instalado "mysqli" y cambiado el nombre del controlador de base de datos en database.php como,
$db['default']['dbdriver'] = 'mysqli';
Ahora está funcionando bien para mí.

+0

$ this-> db-> insert (table_name, $ data); return $ this-> db-> insert_id(); –

11

CodeIgniter's insert_id() solo devolverá una ID de insert(). A menos que esté ejecutando algo como $this->db->insert('table', $data); antes de llamar a la función, no podrá devolver una ID.

+1

Lo tengo trabajando con los siguientes cambios.
1. He cambiado la dbdriver en config.php de MySQL a Mysqli
2. usando el siguiente código
$this->db->mysql_insert_id();

+0

, obviamente, la inserción Identificación del que estamos hablando se inserte después de algunos valores utilizando instrucción de inserción. –

+0

Nunca ha publicado el código, por lo que no estaba seguro de si estaba utilizando un registro activo 'insert()'. –

1

suponiendo que está utilizando activa patrón de registro esto debería funcionar
$this->db->insert_id()

4

Use solamente esta sintaxis

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

return $last_id; 
1

que tenía el mismo problema, y ​​se encontró un problema con este enlace: http://kedyr.wordpress.com/2012/10/03/codeigniter-insert_id/

La solución no es una solución adecuada, porque es solo una forma de moverse usando el sql nativo, con el método codeigniter "Query "y lidiar con la devolución de llamada SQL nativa.

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

¡En un entorno multiusuario, esta solución es un desastre! – meYnot

0

probar esto:

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

en lugar de

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

favor, compruebe si su mesa no tienen incremento automático, campo primario continuación $this->db->insert_id(); no devuelve nada.

+0

En mi caso, este método me ayudó y resolvió el problema. –

+1

Gracias Vignesh :) –

0

Prueba este

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

su código funcionará si tiene un código como el siguiente:

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

insert_id de CodeIgniter() sólo devolverá un ID de un inserto(), como se menciona antes y también que no se olvide de la configuración del nombre del controlador de base de datos en database.php como

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

Cuestiones relacionadas