首页 文章

PDO获取插入的最后一个ID

提问于
浏览
126

我有一个查询,我想要插入最后一个ID . 字段ID是主键并自动递增 .

我知道我必须使用这个声明:

LAST_INSERT_ID()

该语句适用于这样的查询:

$query = "INSERT INTO `cell-place` (ID) VALUES (LAST_INSERT_ID())";

但是,如果我想使用此声明获取ID:

$ID = LAST_INSERT_ID();

我收到此错误:

Fatal error: Call to undefined function LAST_INSERT_ID()

我究竟做错了什么?

2 回答

  • 272

    那's because that'是一个SQL函数,而不是PHP . 你可以使用PDO::lastInsertId() .

    喜欢:

    $stmt = $db->prepare("...");
    $stmt->execute();
    $id = $db->lastInsertId();
    

    如果你想用SQL而不是PDO API来做,你会像普通的选择查询一样:

    $stmt = $db->query("SELECT LAST_INSERT_ID()");
    $lastId = $stmt->fetchColumn();
    
  • 5

    lastInsertId()仅在INSERT查询后起作用 .

    Correct:

    $stmt = $this->conn->prepare("INSERT INTO users(userName,userEmail,userPass) 
                                  VALUES($username,$email,$pass)");
    $sonuc = $stmt->execute();
    $LAST_ID = $this->conn->lastInsertId();
    

    Incorrect:

    $stmt = $this->conn->prepare("SELECT * FROM users");
    $sonuc = $stmt->execute();
    $LAST_ID = $this->conn->lastInsertId(); //always return string(1)=0
    

相关问题