質問
この 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();
他のヒント
混ぜてるのね PDO
ジェネリック付き MySQL
機能。問題は、 mysql_last_insert
にはリソースがないため、false の場合は 0 を返します。混ぜないでください PDO
ジェネリック付き MySQL
機能。
PDO で最後の挿入 ID を取得するには、次の手順を実行します。$dbh->lastInsertId()
所属していません StackOverflow