9
votes

Utilisation de Adodb pour PHP / PostgreSQL, identifiant la ligne de retour après insertion

Lorsque j'insère une ligne, il incrémente le champ ID à l'aide de série.

Comment puis-je retourner le numéro d'identification nouvellement créé juste après l'insertion?

(la base de données est PostgreSQL.)


0 commentaires

5 Réponses :


18
votes
$db->Insert_ID();

0 commentaires

3
votes

Traitez votre insert identique à celle d'une sélection et d'une utilisation de votre insertion:

Insérer dans les valeurs FOO (bar) ('DOE') ID de retour;

récupérez le résultat et vous avez terminé. Fonctionne depuis la version 8.2


0 commentaires

2
votes

insertion_id () code> in adodb code> renvoie la valeur vide ou dans certains cas, il renvoie 0.

Le postgreSQL CODE> J'ai travaillé sur 9.1 Version. P>

$_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.


0 commentaires

7
votes

Ce code fonctionne bien:

$insertId = $adodb->getOne("INSERT INTO test (str) values ('test') RETURNING id");


0 commentaires

0
votes

J'aime utiliser adodb pour éviter d'écrire SQL. J'ai besoin d'insérer un enregistrement sur la table1 avec Text1 et en même temps un enregistrement sur la table2 avec d'autres données et l'ID créé sur la table1 comme référence. J'aime l'idée d'utiliser transaction et autoexecute xxx

autoexecute manque toujours d'une option pour renvoyer le insertion_id () < / code>


0 commentaires