获取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 "<strong style='color:#fff;'>".$_SESSION['newUserSessID']."</strong>";
回显该值,它总是返回零。
即使我跑了:
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->lastInsertId()
http://php.net/manual/en/pdo.lastinsertid.php
【讨论】:
以上是关于获取mysql的最后一条记录的主要内容,如果未能解决你的问题,请参考以下文章
如何使用聚合函数在 MySQL 查询中获取分组记录的第一条和最后一条记录?