コードロード

エラー討伐

【PHP・mysqli】INSERTしたレコードの主キーを取得

やりたかったこと

mysqliで直前にINSERT処理で追加したレコードの主キー(id)を取得したかったのでメモ。

実装方法

mysqli::$insert_id を使う。

直前のクエリで更新された AUTO_INCREMENT フィールドの値を返します。接続での直前のクエリがない場合や クエリが AUTO_INCREMENT の値を更新しなかった場合は ゼロを返します。 公式リファレンスから引用

mysqli::$insert_id

具体例

  public function insertUserName(string $name) {

    $sql = "INSERT INTO users (name) VALUES (?)";
    $stmt = $this->mysqli->prepare($sql);
    $stmt->bind_param('s', $name);
    $res = $stmt->execute();
    // ↓ ココ!!
    $this->user_id = $stmt->insert_id;
    return $res;
  }

参考

mysqliで最後に登録したデータのIDを取得する | GRAYCODE PHPプログラミング