在这种情况下如何使用 lastInsertId?
How to use lastInsertId in this case?
我想要的是获取并存储最后插入的 ID,但我不确定如何操作。场景是,在用户添加记录后 he/she 将被重定向到一个页面,该页面将显示 him/her he/she 保存的摘要。但我不确定我该怎么做才能检索到最近添加的记录。
我有一个 class 看起来像这样 record.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";
}
}
?>
思路是将query保存到两个不同的table同时自动记录table1到table2的自增ID,使它们有关系.我想我可以做到这一点,如果我可以立即存储来自 table 1 的 ID 并可能为其分配一个变量,那么它可能会使用新的查询或函数自动保存到 table 两个。这可能吗?是否有意义?还有一件事我想立即向用户显示最近记录的数据。谢谢。
您可以 return $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";
}
我想要的是获取并存储最后插入的 ID,但我不确定如何操作。场景是,在用户添加记录后 he/she 将被重定向到一个页面,该页面将显示 him/her he/she 保存的摘要。但我不确定我该怎么做才能检索到最近添加的记录。 我有一个 class 看起来像这样 record.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";
}
}
?>
思路是将query保存到两个不同的table同时自动记录table1到table2的自增ID,使它们有关系.我想我可以做到这一点,如果我可以立即存储来自 table 1 的 ID 并可能为其分配一个变量,那么它可能会使用新的查询或函数自动保存到 table 两个。这可能吗?是否有意义?还有一件事我想立即向用户显示最近记录的数据。谢谢。
您可以 return $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";
}