Cuando inserto una fila, se incrementa el campo ID usando SERIAL.Usando Adodb para php/postgresql, devuelva ID de fila después de insertar
¿Cómo puedo devolver el número de ID recién creado justo después del inserto?
(base de datos es PostgreSQL.)
Cuando inserto una fila, se incrementa el campo ID usando SERIAL.Usando Adodb para php/postgresql, devuelva ID de fila después de insertar
¿Cómo puedo devolver el número de ID recién creado justo después del inserto?
(base de datos es PostgreSQL.)
$db->Insert_ID();
a tratar su insertar el mismo como seleccionar y utilizar a volver en su INSERT-consulta:
INSERT INTO foo (bar) VALUES ('Doe') ID DEVUELTO;
Obtenga el resultado y listo. Funciona desde la versión 8.2
Insert_ID()
en adodb
retornos valor vacío o en algún caso se devolverá 0.
El postgresql
que trabajé se encuentra en la versión 9.1.
$_sql = 'INSERT INTO '.$_table.' (';
$_sql .= implode(', ',$arr_fld_names);
$_sql .= ") VALUES ('";
$_sql .= implode("', '",$arr_fld_values);
$_sql .= "')";
if ($echo){
echo $_sql;
}
$_return = $this->Execute($_sql);
$this->mLastInsertedId = $this->mConn->Insert_ID(); // Keep track of the last inserted ID.
Editar: He añadido una manera sucia:
$_sql = 'INSERT INTO '.$_table.' (';
$_sql .= implode(', ',$arr_fld_names);
$_sql .= ") VALUES ('";
$_sql .= implode("', '",$arr_fld_values);
$_sql .= "') RETURNING id";
if ($echo){
echo $_sql;
}
$_return = $this->Execute($_sql);
preg_match_all('/([\d]+)/', $_return, $ret_val);
$this->mLastInsertedId = $ret_val[0][0]; // Keep track of the last inserted ID.
Este código funciona muy bien:
$insertId = $adodb->getOne("INSERT INTO test (str) values ('test') RETURNING id");