获取mysql的最后一条记录

Posted

技术标签:

【中文标题】获取mysql的最后一条记录【英文标题】:Get last record in mysql 【发布时间】:2012-03-14 01:51:43 【问题描述】:

使用这个 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 "&lt;strong style='color:#fff;'&gt;".$_SESSION['newUserSessID']."&lt;/strong&gt;"; 回显该值,它总是返回零。

即使我跑了:

SELECT LAST_INSERT_ID( ) 
FROM Fan
LIMIT 0 , 30

它给了我这样的输出

0
0

(因为数据库表有两行)

有人吗?

【问题讨论】:

mysql_insert_id() 检索前一个查询为 AUTO_INCREMENT 列生成的 ID。您的任何列都是 AUTO_INCREMENTS 吗? Fan中的其他字段是什么? html 标记需要双引号 (") 而不是您在 echo 语句中使用的单引号 (')。 @AmitBhargava - 是的,PK 是自动递增的。 @Jon - 我不认为这是问题所在。 @user975947 我从来没有说过,这就是为什么它是评论,而不是答案。但 HTML 确实需要双引号。 【参考方案1】:

您不应使用mysql_insert_id,因为它不是 PDO 的一部分(在本例中,您使用它与数据库进行交互)。

改为使用PDO::lastInsertId():

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

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

【讨论】:

完美,抱歉对 PDO 有点陌生。那很简单。谢谢@Ezequiel Muns!【参考方案2】:

您将PDO 与通用MySQL 函数混合使用。问题是 mysql_last_insert 没有资源,因此它返回 0 表示 false。不要将PDO 与通用MySQL 函数混用。

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

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

【讨论】:

以上是关于获取mysql的最后一条记录的主要内容,如果未能解决你的问题,请参考以下文章

如何使用聚合函数在 MySQL 查询中获取分组记录的第一条和最后一条记录?

获取mysql的最后一条记录

如何使用 Hibernate 从 Mysql 获取最后一条记录?

MySQL使用limit获取最后一条记录

MYSQL中获取得最后一条记录的语句

mysql中如何查询表的第一条和最后一条记录