Wenn ich eine Zeile einfügen, erhöht es das ID-Feld mit SERIAL.Verwenden von Adodb für PHP/Postgresql, geben Sie die Zeilen-ID nach dem Einfügen
Wie kann ich die neu erstellte ID-Nummer direkt nach dem Einfügen zurückgeben?
(Database Postgresql.)
Wenn ich eine Zeile einfügen, erhöht es das ID-Feld mit SERIAL.Verwenden von Adodb für PHP/Postgresql, geben Sie die Zeilen-ID nach dem Einfügen
Wie kann ich die neu erstellte ID-Nummer direkt nach dem Einfügen zurückgeben?
(Database Postgresql.)
$db->Insert_ID();
Ihre INSERT Behandeln Sie die gleiche wie ein SELECT und verwenden Sie in Ihren INSERT-Abfrage RÜCKKEHR:
INSERT INTO foo (bar) VALUES ('Doe') RÜCKGABE id;
Holen Sie das Ergebnis und Sie sind fertig. Arbeitet seit Version 8.2
Insert_ID()
in adodb
kehrt leeren Wert oder in einigen Fällen zurückgeben 0
Die postgresql
Ich arbeitete in Version 9.1 ist.
$_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.
Edit: ich eine schmutzige Art und Weise hinzugefügt haben:
$_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.
Dieser Code funktioniert gut:
$insertId = $adodb->getOne("INSERT INTO test (str) values ('test') RETURNING id");