dongrong5189 2013-06-05 00:06
浏览 84

PDO的lastInsertId()在$ _SESSION ['xxxxxx'] =?返回一行中的正确ID而不是我需要它的另一行

Im working on a login script but am having trouble with lastInsertId();

Here's the code;

 <?php
    session_start();

    db = new PDO("mysql:host=hostname;dbname=database name", user, password);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    try { 
        $db->beginTransaction();
        $db->query("INSERT INTO `subscribers`(`subscribers`.`first_name`, `subscribers`.`last_name`) VALUES ('Jane', 'Doe')");
        $db->query("UPDATE `subscribers` SET `first_name`='John' WHERE `ID` =".$db->lastInsertId());
        $db->commit();
        $LastID = $db->lastInsertId();
        $_SESSION['user_id'] = $LastID; 

    } catch (PDOException $e) {
        $db->rollBack();
        die($e->getMessage());
        }
?>

My problem is that the UPDATE query performs properly (based off of WHERE ID =".$db->lastInsertId());) but when I try to use the function for setting the $_SESSION as seen in the code all I get back is 0.

If anyone wouldn't mind showing me what's askew I'd be most appreciative and I thank you in advance.

  • 写回答

2条回答 默认 最新

  • dongrunying7537 2013-06-05 00:12
    关注

    Why not just:

    $db->beginTransaction();
    $db->query("INSERT INTO `subscribers`(`subscribers`.`first_name`, `subscribers`.`last_name`) VALUES ('Jane', 'Doe')");
    // Grab, save
    $LastID = $db->lastInsertId();
    // Query by last ID
    $db->query("UPDATE `subscribers` SET `first_name`='John' WHERE `ID` =".$LastID);
    $db->commit();
    // Write last ID to session
    $_SESSION['user_id'] = $LastID;
    
    评论

报告相同问题?

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向