データベースに最後に挿入された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;
}
}
ます$ this-> DB-> INSERT_IDがあり、あなたの他の方法 – Roljhon
にそのIDを渡すのですか?あなたが使用しているsql apiは何ですか? var_dump $ this-> db – Roljhon
私はPDOを使用しています。 – user8463989