Frage

Verwenden dieses PHP-Codes:

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

Es fügt sich gut in die Datenbank ein, aber ich benutze echo "<strong style='color:#fff;'>".$_SESSION['newUserSessID']."</strong>"; um diesen Wert wiederzugeben, wird IMMER eine Null zurückgegeben.

Auch wenn ich renne :

SELECT LAST_INSERT_ID( ) 
FROM Fan
LIMIT 0 , 30

Es gibt mir Ausgabe wie

0
0

(da es zwei Zeilen in der Datenbanktabelle gibt)

Irgendjemand?

War es hilfreich?

Lösung

Sie sollten nicht verwenden mysql_insert_id da dies nicht Teil von PDO ist (was Sie in diesem Fall für die Interaktion mit der Datenbank verwenden).

Verwenden Sie stattdessen PDO::lastInsertId():

$_SESSION['newUserSessID'] = $dbh->lastInsertId();

Mehr Infos: http://www.php.net/manual/en/pdo.lastinsertid.php

Andere Tipps

Du mischst PDO mit Generika MySQL Funktion.Das Problem ist die mysql_last_insert hat keine Ressource und gibt daher 0 für false zurück.Nicht mischen PDO mit Generika MySQL Funktion.

Gehen Sie folgendermaßen vor, um die letzte Einfüge-ID in PDO zu erhalten:$dbh->lastInsertId()

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top