2010-01-26 4 views
6

En PHP, j'utilise PDO avec les pilotes pgSQL. Je voulais savoir comment obtenir la valeur de la clause "RETURNING" donnée dans la requête SQL INSERT. Mon code actuel ressemble à ceci,En PHP, lors de l'utilisation de PDO avec pgSQL comment obtenir la valeur de la clause "RETURNING" dans la requête INSERT sql d'origine

$query = 'INSERT INTO "TEST" (firstname, lastname) VALUES ('John', 'Doe') RETURNING user_id'; 
$queryHandle = $connection->prepare($query); 
$queryHandle->execute(); 

Il est évident que

$ queryHandle-> execute();

renvoie la valeur TRUE ou FALSE. Mais je voulais obtenir la valeur de "user_id" si l'insertion était réussie. Pouvez-vous me donner un point de vue sur la façon de s'y prendre? Merci.

+0

J'ai essayé d'utiliser PDO :: lastInsertID en premier. Mais c'était juste renvoyer des valeurs vides. Par conséquent après avoir regardé autour de trouvé que la façon ci-dessus est beaucoup plus propre. – Chantz

Répondre

9

Avez-vous essayé de traiter la commande comme select retour, la course

$ret=$queryHandle->fetchAll(); 
+0

Cela fonctionne vraiment! :) Mais j'espérais une façon plus directe/propre de le faire. Peut-être que je demande trop ... – Chantz

+0

Il n'y a pas de façon plus propre, car vous avez un retour de données. C'est trivial, vous devez aller le chercher. – Pentium10

+1

k. Juste une chose mineure, j'ai utilisé fetch() au lieu de fetchAll() sine, c'est garanti qu'il n'y ait qu'un seul insert à la fois. – Chantz

11
$ret = $queryHandle->fetchColumn(); 

retourne une seule valeur au lieu d'un tableau.

+0

C'est le bon moyen si vous voulez simplement récupérer l'ID 'RETURNING id ...' – Xeoncross

Questions connexes