0

我正在处理登录脚本,但在使用 lastInsertId(); 时遇到问题;

这是代码;

 <?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());
        }
?>

我的问题是 UPDATE 查询执行正确(基于 WHERE ID=".$db->lastInsertId());)但是当我尝试使用该函数设置 $_SESSION 时,我得到的只是代码0。

如果有人不介意向我展示什么是歪斜的,我将不胜感激,我提前感谢你。

4

2 回答 2

0

为什么不只是:

$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;
于 2013-06-05T00:12:18.840 回答
0

我的猜测是update破坏了lastInsertId你的insert. 尝试将 id 存储在变量中以供以后使用:

    $db->query("INSERT INTO `subscribers`(`subscribers`.`first_name`, `subscribers`.`last_name`) VALUES ('Jane', 'Doe')");
    $last_id=$db->lastInsertId();
    $db->query("UPDATE `subscribers` SET `first_name`='John' WHERE `ID` =".$last_id);
    $db->commit();
    $_SESSION['user_id'] = $last_id
于 2013-06-05T00:12:23.910 回答