使用这个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
(因为数据库表中有两行)
任何?
答案 0 :(得分:3)
您不应该使用mysql_insert_id
,因为它不是PDO的一部分(这是您在此实例中用于与数据库交互的内容)。
而是使用PDO::lastInsertId()
:
$_SESSION['newUserSessID'] = $dbh->lastInsertId();
答案 1 :(得分:0)
您正在将PDO
与通用MySQL
功能混合使用。问题是mysql_last_insert
没有资源,所以它返回0表示false。不要将PDO
与通用MySQL
函数混合使用。
要获取PDO中的最后一个插入ID,请执行以下操作:
$dbh->lastInsertId()