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?

Était-ce utile?

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()

http://php.net/manual/en/pdo.lastinsertid.php

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top