2017-09-28 5 views
0

J'essaie d'obtenir le dernier numéro d'identification de la base de données. Mais il montre seulement 0. J'apprends le PDO. Quelqu'un peut-il me dire comment puis-je le faire?Afficher le dernier identifiant de la base de données dans PDO

if($_SERVER['REQUEST_METHOD']=='POST'){ 
    $sql = "SELECT * FROM tablename"; 
    $stmt = $pdo->prepare($sql); 
    $stmt->execute(); 
    $row = $stmt ->fetch(); 
    $showid = $pdo->lastInsertId(); 
    echo $showid; 
} 
+0

que contient votre 'lastInsertId()'? –

+1

Vous n'insérez rien ici, c'est pourquoi l'identifiant d'insertion n'est pas disponible. –

+1

@MammaMia: "Cela montre seulement 0" –

Répondre

4

lastInsertId renverra l'ID d'une ligne qui a été insérée par la même connexion. Vous ne pouvez pas l'utiliser en dehors de ce contexte.

La meilleure façon d'aller chercher le dernier ID serait de lancer quelque chose comme,

SELECT max(id) FROM tablename 

Si vous utilisez ceci afin d'élaborer l'ID devrait être inséré à côté, envisager d'utiliser un auto-incrément colonne pour votre ID à la place.

0

lastInsertId() fonctionne uniquement après une requête INSERT - puisque vous faites seulement select, il retournera toujours string (1) = 0

Donc, soit vous effectuez ce code après une déclaration INSERT, ou vous pouvez faire les éléments suivants:

$stmt = $db->query("SELECT LAST_INSERT_ID()"); 
$lastId = $stmt->fetchColumn(); 

référenceurs ici pour: PDO get the last ID inserted

Visitez ce fil, vous trouverez mon SampleCode fourni par Corbin et beaucoup plus d'informations sur ce sujet.

+0

J'ai essayé votre lien et puis il montre seulement 0, mais cela est censé montrer 2. Un indice? –