0

この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

FINEをデータベースに挿入しますが、私はecho "<strong style='color:#fff;'>".$_SESSION['newUserSessID']."</strong>";その値をエコーアウトするために使用しており、常にゼロを返します。

私が走っても:

SELECT LAST_INSERT_ID( ) 
FROM Fan
LIMIT 0 , 30

それは私に次のような出力を与えます

0
0

(データベーステーブルに2つの行があるため)

誰?

4

2 に答える 2

3

mysql_insert_idこれはPDO(このインスタンスでデータベースと対話するために使用しているもの)の一部ではないため、使用しないでください。

代わりに:を使用してPDO::lastInsertId()ください

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

詳細:http ://www.php.net/manual/en/pdo.lastinsertid.php

于 2012-03-14T01:58:04.293 に答える
0

あなたはPDOジェネリックMySQL関数と混合しています。問題は、mysql_last_insertにリソースがないため、falseの場合は0を返します。PDOジェネリックMySQL関数と混同しないでください。

PDOの最後の挿入IDを取得するには、次のようにします。 $dbh->lastInsertId()

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

于 2012-03-14T01:58:21.993 に答える