Obtenir le dernier enregistrement dans mysql
-
13-12-2019 - |
Question
En utilisant ce code php:
try{
$dbh = new PDO("mysql:host=$host;dbname=$dbname",$user,$pass);
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
// INSERT CLEAN DATA INTO TABLE…
$sth = $dbh->prepare("
INSERT INTO Fan(fanNm,fanEmail,fanPass,fanDynamSalt)
VALUES('$userName','$userEmailAddress','$userPassword','$dynamSalt')"
);
$sth->execute();
////////////////////////////////////////////////////////////////////
## Set Session Var for this PK ID in Fan table that is being created ##
////////////////////////////////////////////////////////////////////
$_SESSION['newUserSessID'] = mysql_insert_id();
echo "<strong style='color:#fff;'>".$_SESSION['newUserSessID']."</strong>";
} //try
catch(PDOException $e){
echo "Oops, We're experiencing an error.";
file_put_contents('/PDODBConnectionErrors.txt', $e->getMessage(), FILE_APPEND);
} //catch
Il insère FINE dans la base de données, mais je suis en utilisant echo "<strong style='color:#fff;'>".$_SESSION['newUserSessID']."</strong>";
l'écho que de la valeur et il renvoie TOUJOURS zéro.
Même si je lance :
SELECT LAST_INSERT_ID( )
FROM Fan
LIMIT 0 , 30
Il me donne comme sortie
0
0
(puisqu'il y a deux lignes dans la table de base de données)
N'importe qui?
La solution
Vous ne devez pas utiliser mysql_insert_id
comme ce n'est pas une partie de l'AOP (qui est ce que vous utilisez pour interagir avec la base de données dans cet exemple).
Au lieu d'utiliser PDO::lastInsertId()
:
$_SESSION['newUserSessID'] = $dbh->lastInsertId();
Plus d'infos: http://www.php.net/manual/en/pdo.lastinsertid.php
Autres conseils
Vous êtes de mélange PDO
avec générique MySQL
fonctions.Le problème est la mysql_last_insert
n'a pas de ressources, et si elle retourne 0 pour faux.Ne pas mélanger PDO
avec générique MySQL
fonctions.
Pour récupérer le dernier id inséré dans PDO, faites ceci:$dbh->lastInsertId()