Como llegar último registro insertado identificador de fila de la base de datos de WordPress?
-
21-09-2019 - |
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.
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;
...
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.