質問

この 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つの行があるため)

誰でも?

役に立ちましたか?

解決

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

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

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

より詳しい情報: http://www.php.net/manual/en/pdo.lastinsertid.php

他のヒント

混ぜてるのね PDO ジェネリック付き MySQL 機能。問題は、 mysql_last_insert にはリソースがないため、false の場合は 0 を返します。混ぜないでください PDO ジェネリック付き MySQL 機能。

PDO で最後の挿入 ID を取得するには、次の手順を実行します。$dbh->lastInsertId()

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top