【问题标题】:Get last record in mysql获取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 确实需要双引号。

标签: php mysql lastinsertid


【解决方案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

【讨论】:

    猜你喜欢
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 2023-03-16
    • 1970-01-01
    • 2015-01-29
    • 2012-01-23
    相关资源
    最近更新 更多