2017-12-06 24 views
-1

データベースに最後に挿入されたIDを取得しようとしています。このIDを使用して別のレコード(この場合は特定のレコードに関連する画像)を挿入しようとしています。注:MVCを使用していますが、これはモデルにあります。これらの2つの操作は、互いの直後に直ちに起こるはずである。すなわち、ユーザは、同時に2つの異なる挿入が行われているのを見ることはない。最後の挿入IDの取得とdb phpへの挿入MVC

これが最初のインサートである:この行は、上記で正しいかどうかはわからない

public function addAccom($data) 
    { 
     $this->db->query("INSERT INTO `accommodation` (`name`, `description`, `category`, `slug`) VALUES (:name, :description, :category, :slug)"); 
     $this->db->bind(":name", $data['name']); 
     $this->db->bind(":description", $data['description']); 
     $this->db->bind(":category", $data['category']); 
     $this->db->bind(":slug", $data['slug']); 
     if($this->db->execute()){ 
     $id = $this->db->lastInsertId(); 
      return true; 
     } else { 
      return false; 
     } 
    } 

:この挿入した後

$id = $this->db->lastInsertId(); 

を、私は他に複数のレコードを挿入する必要がありますテーブルを作成します。

これと同じクエリで別のdbクエリを実行するか、別のクエリを作成する必要がありますか?

public function addAccomPic($data) 
{ 
    $this->db->query("INSERT INTO `accom_pics` (`accom_id`, `pic_name`) VALUES (:accom_id, :pic_name)"); 
    $this->db->bind(":accom_id", $data['accom_id']); 
    $this->db->bind(":pic_name", $data['pic_name']); 
    if($this->db->execute()) { 
     return true; 
    } else { 
     return false; 
    } 
} 

データベース::これは私が持っていた2番目のクエリで

private $host = DB_HOST; 
    private $user = DB_USER; 
    private $pass = DB_PASS; 
    private $dbname = DB_NAME; 

    private $dbh; // Is this the same as $link ? 
    private $stmt; 
    private $error; 

    public function __construct() { 
     $dsn = "mysql:host=$this->host;dbname=$this->dbname"; 
     $options = array(
      PDO::ATTR_PERSISTENT => true, 
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 
     ); 

     try { 
      $this->dbh = new PDO($dsn, $this->user, $this->pass, $options); 

     } catch(PDOexception $e) { 
      $this->error = $e->getMessage(); 
      echo $this->error; 
     } 
    } 
+0

ます$ this-> DB-> INSERT_IDがあり、あなたの他の方法 – Roljhon

+0

にそのIDを渡すのですか?あなたが使用しているsql apiは何ですか? var_dump $ this-> db – Roljhon

+0

私はPDOを使用しています。 – user8463989

答えて

0

私が見る最初の事、それは$ idはローカル変数であるのです。グローバルとして設定するようにしてください:このmysqliのは、あなたが探しているものを

public $id = null; 

public function addAccom($data) 
{ 
    $this->id = $this->db->lastInsertId(); 
} 
+0

ありがとうございます。このエラーが発生します: '未定義のプロパティ:Database :: $ insert_id' – user8463989

+0

エラーは最初の方法ですか? $ this-> idと呼んだとき? $ data ['accom_id']は$ this-> idになります。 –

+0

はい、私は2番目のメソッドをコメントアウトし、私はまだ同じエラーが発生します – user8463989

関連する問題