亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

lastInsertId 返回 0

lastInsertId 返回 0

PHP
慕婉清6462132 2022-12-23 13:16:01
實際上,有很多關于這個的帖子。但即使我檢查了那些,仍然找不到問題。DBC類protected function connect(){    $dns = "mysql:host=" . $this->server . ";dbname=" . $this->database;    $pdo = new PDO($dns, $this->username, $this->password);    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);    return $pdo;}并插入函數。public function insert_row($created_at){    $sql = "INSERT INTO empty_rows (created_at) VALUES (?)";    $stmt = $this->connect()->prepare($sql);    $stmt->execute([$created_at]);      $id = $this->connect()->lastInsertId();    echo $id;}我認為它應該返回最后插入的 Id 但是,它只返回 0。我在這里缺少什么?
查看完整描述

1 回答

?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

$lastInsertId()返回在同一連接上插入的 ID。每次呼叫時都會獲得一個新的連接$this->connect()。


您需要保存結果,$this-connect()以便使用相同的連接。


public function insert_row($created_at){

    $sql = "INSERT INTO empty_rows (created_at) VALUES (?)";

    $connect = $this->connect();

    $stmt = $connect->prepare($sql);

    $stmt->execute([$created_at]);  

    $id = $connect->lastInsertId();


    echo $id;

}

一般來說,如果您不斷創建新連接,您的應用程序會顯著變慢。我建議你改變connect()方法,讓它只在第一次連接。


protected function connect(){

    if (!isset($this->pdo) {

        $dns = "mysql:host=" . $this->server . ";dbname=" . $this->database;

        $this->$pdo = new PDO($dns, $this->username, $this->password);

        $this->$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

    }

    return $this->$pdo;

}


查看完整回答
反對 回復 2022-12-23
  • 1 回答
  • 0 關注
  • 177 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號