获取mysql中的最后一条记录

时间:2012-03-14 01:51:43

标签: php mysql lastinsertid

使用这个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 个答案:

答案 0 :(得分:3)

您不应该使用mysql_insert_id,因为它不是PDO的一部分(这是您在此实例中用于与数据库交互的内容)。

而是使用PDO::lastInsertId()

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

更多信息:http://www.php.net/manual/en/pdo.lastinsertid.php

答案 1 :(得分:0)

您正在将PDO与通用MySQL功能混合使用。问题是mysql_last_insert没有资源,所以它返回0表示false。不要将PDO与通用MySQL函数混合使用。

要获取PDO中的最后一个插入ID,请执行以下操作: $dbh->lastInsertId()

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