Как использовать lastInsertId в этом случае? - PullRequest
1 голос
/ 24 февраля 2020

Я хочу получить и сохранить последний вставленный идентификатор, но я не уверен, как это сделать. Сценарий заключается в том, что после добавления пользователем записи он / она будет перенаправлен на страницу, которая покажет ему / ей сводку того, что он / она сохранил. Но я не уверен, как мне это сделать, чтобы восстановить недавно добавленную запись. У меня есть класс, который похож на эту запись. php

<?php
class Record {
     private $conn;
     private $table_name_1 = "name_of_the_table_1";
     private $table_name_2 = "name_of_the_table_2";

     public $name;
     public $age;
     public function __construct($db){
    $this->conn = $db;
}
function newRecord(){
     $query = "INSERT INTO " . $this->table_name_1 . " SET name=:name;
     INSERT INTO " . $this->table_name_2 . " SET age=:age";
     $stmt = $this->conn->prepare($query);
     $this->name=$this->name;
     $this->age=$this->age;
     $stmt->bindParam(':name', $this->name);
     $stmt->bindParam(':age', $this->age);
     if($stmt->execute()){
        return  true;
    }else{
        return false;
    }
   }
   }
  ?>

теперь у меня есть другая форма php, которая создает и добавляет запись, код похож на эту add_record. php

<?php
inlude_once 'db.php'
inlude_once 'record.php'

$database = new Database();
$db = $database->getConnection();

$record = new Record($db);
?>

<?php 
if($_POST) {
$record->name=$_POST['name'];
$record->age=$_POST['age'];

if(record->record()){
header("Location:{$home_url}view_recently_added_record.php?action=record_saved");
}
else{
echo "Unable to save";
}
}
?>

Идея состоит в том, чтобы сохранить запрос в двух разных таблицах и одновременно автоматически записать идентификатор автоматического приращения таблицы 1 в таблицу 2, чтобы они имели связь. Я думаю, что смогу сделать это, если я смогу сразу сохранить идентификатор из таблицы 1 и присвоить ему переменную, может быть, поэтому он может быть автоматически сохранен во второй таблице, используя новый запрос или функцию, может быть. Это возможно? имеет ли это смысл? и еще одна вещь, которую я хотел, чтобы отобразить недавно записанные данные сразу для пользователя. Спасибо.

1 Ответ

0 голосов
/ 24 февраля 2020

Вы можете вернуть $stmt->insert_id или -1 вместо логического значения в функции newRecord:

function newRecord(){
     ...
     if($stmt->execute()){
        return $stmt->insert_id;
    }else{
        return -1;
    }
   }

и использовать значение для перенаправления следующим образом:

$newrecord = record->newRecord();
if($newrecord != -1) {
   header("Location:{$home_url}view_recently_added_record.php?action=record_saved&id=".$newrecord);
}
else{
   echo "Unable to save";
}
...