J'essaye de récupérer le dernier insert fait dans ma base avec l'aider de la l'instruction @@identity de sybase ASE 15.
Voici mon code de tests :
<?php
$dsn = 'dblib:host=192.168.0.0:5000;dbname=test';
try {
$db = new PDO($dsn, 'test', 'xxxx');
$query = 'insert into test (message) values ("test un message")';
if ($db->exec($query) === false) {
echo 'Erreur d\'insertion dans la base.<br />';
exit;
}
else {
echo 'Insertion reussie.<br />';
}
$query = 'insert into test (message) values ("test deux messages")';
if ($db->exec($query) === false) {
echo 'Erreur d\'insertion dans la base.<br />';
exit;
}
else {
echo 'Insertion reussie.<br />';
}
if (($last = $db->exec('select @@identity')) === false) {
echo 'Erreur pour lire le dernier element.<br />';
echo '<pre>';print_r($db->errorInfo());echo '</pre><br />';
}
else {
echo 'Le last est : ', $last, '.<br />';
}
}
catch (PDOException $e) {
echo 'Le message d\'erreur est : ', $e->getMessage(), '<br />';
}
?>
Actuellement, ça me retourne cette sortie :
Code : Tout sélectionner
Insertion reussie.
Le last est : 1.
Pour info j'ai testé select @@identity en ligne de commande et le résultat est plus ou moins bon.
Si je fais un insert et juste après un @@identity, j'ai bien le bon résultat. Par contre si je fais un insert avec PHP et après un select @@identity en ligne de commande, j'obtiens un mauvais résultat. Ca me parait correct car je n'ai pas la même connexion d'ouverte vers le serveur mais est-ce que quelqu'un pourrait me le confirmer ?
Merci.