php - update - zend framework where in query
cómo ser insertado por última vez Id de una base de datos Sqlite usando Zend_Db (5)
PDO :: lastInserId ()
Estoy intentando buscar la última Id de fila insertada de un DB Sqlite en mi aplicación PHP. Estoy utilizando el adaptador PDO Sqlite de Zend Framework para el manejo de la base de datos. se supone que el método lastInsertId () me da los resultados, pero no es así. En la documentación de PDO en php.net, leí que el últimoInsertId () podría no funcionar igual en todas las bases de datos. pero ¿no funcionaría en sqlite en absoluto? Intenté sobreescribir el último método de inserción del inserto () del adaptador de esta manera:
// Zend_Db_Adapter_Pdo_Sqlite
public function lastInsertId() {
$result = $this->_connection->query(''SELECT last_insert_rowid()'')->fetch();
return $result[0];
}
pero tampoco funciona. simplemente devuelve 0 cada vez que lo llamo. ¿hay alguna forma especial y limpia de encontrar el último Id insertado?
SELECT * FROM [tablename] ORDER BY id DESC LIMIT 1
Oye, prueba esta consulta. Pero no sé sobre PHP.
SELECT *
FROM tablename
WHERE id = (SELECT COUNT(*) FROM tablename);
No utilice
SELECT * FROM tablename WHERE id = (SELECT COUNT(*) FROM tablename);
en su lugar use
SELECT MAX(id) as id FROM tablename LIMIT 1;
o
SELECT id FROM tablename ORDER DESC LIMIT 1;
Dada una base de datos SQLite3 con una tabla b
, de la siguiente manera:
BEGIN TRANSACTION;
CREATE TABLE b(a integer primary key autoincrement, b varchar(1));
COMMIT;
Este código me da un lastInsertId
:
public function lastInsertId() {
$result = $this->_connection->query(''SELECT last_insert_rowid() as last_insert_rowid'')->fetch();
return $result[''last_insert_rowid''];
}
Es decir, si su tabla está definida correctamente, es probable que su único problema sea que haya tratado de obtener la clave $ result [0]; también, siempre que esté utilizando una columna calculada, le recomiendo que alias la columna utilizando el "AS" palabra clave como he demostrado anteriormente. Si no desea alias la columna, en SQLite3 la columna debe llamarse "last_insert_rowid ()".