Como llegar último registro insertado identificador de fila de la base de datos de WordPress?

StackOverflow https://stackoverflow.com/questions/1576018

Pregunta

Mi WordPress plugin tiene una mesa con un AUTO_INCREMENT campo de clave principal llamada ID. Cuando se inserta una nueva fila en la tabla, me gustaría obtener el valor de la identificación de la inserción.

La característica es el uso de AJAX a datos posteriores a servidor para insertar en DB. La nueva fila de identificación se devuelve en la respuesta AJAX para el estado de actualización de clientes. Es posible que varios clientes están publicando datos al servidor al mismo tiempo. Por lo tanto, tengo que asegurarse de que cada solicitud AJAX obtener el nuevo identificador de fila exacto en respuesta.

En PHP, hay un método llamado mysql_insert_id para este feature.But, es válido para la condición de carrera sólo si el argumento es id_enlace de la última operación. Mi operación con la base de datos está en $ wpdb. Cómo extraer el id_enlace $ wpdb para hacer el trabajo mysql_insert_id seguro? ¿Hay alguna otra manera de obtener el id-última insertada fila de $ wpdb?

Gracias.

¿Fue útil?

Solución

Inmediatamente después de la $wpdb->insert() que hace la inserción, haga lo siguiente:

$lastid = $wpdb->insert_id;

Más información sobre cómo hacer las cosas como WordPress se puede encontrar en el códice de WordPress. Los datos anteriores se encuentran aquí en la página wpdb clase

Otros consejos

Esta es la forma en que lo hice, en mi código

 ...
 global $wpdb;
 $query =  "INSERT INTO... VALUES(...)" ;
 $wpdb->query(
        $wpdb->prepare($query)
);
return $wpdb->insert_id;
...

Más variables de clase

Algo así debe hacerlo también:

$last = $wpdb->get_row("SHOW TABLE STATUS LIKE 'table_name'");
$lastid = $last->Auto_increment;

Si deja una llamada a mysql_insert_id() dentro de una transacción, debe hacerlo:

mysql_query('BEGIN');
// Whatever code that does the insert here.
$id = mysql_insert_id();
mysql_query('COMMIT');
// Stuff with $id.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top