php - 将 mysql 最后插入的 id 作为链接变量返回

标签 php mysql last-insert-id

我有以下 php 页面。我需要将 INSERT 语句的最后插入的 id 作为链接变量返回到我的 php 页面。我的代码如下:

room_reservation.php

<?php
    if(isset($_REQUEST["id"])){
        echo $_REQUEST["id"];
    }
?>
<html>
<body>
    <form method="post" action="reception-c.php">
        <input type="text" name="trans_id"/>
        <input type="text" name="start_date"/>
        <input type="text" name="cust_id"/>
        <input type="submit" name="submit" value="submit"/>
    </form>
</body>
</html>

接待处-c.php

<?php
    require_once '../model/reception-m.php';

    $trans_id=$_POST["trans_id"];
    $start_date=$_POST["apply_date"];
    $cust_id=$_POST["customerid"];
    $obj=new Reception();
    if($trans_id===""){
        $result=$obj->generateNewTransaction($start_date,$cust_id);
        $trans_id=$result;
    }
    header("Location: ../view/room_reservation.php?id=$trans_id");

?>

接待处-m.php

require_once '../../common/model/dbconnection-m.php';

<?php
class Reception{
public function generateNewTransaction($start_date,$cust_id){
    global $db;
    $query="INSERT INTO transaction_log VALUES ('','$start_date',NULL,'pending','$cust_id')";
    $result=$db->add_query($query);
    return $db->insert_id; //Not Working
}
}
?>

数据库连接-m.php

<?php

class Database{
private $connection;

function __construct() {
    $this->open_connection();
}

public function open_connection(){
    $this->connection=  mysqli_connect('localhost', 'root', '', 'mis');
        if(!$this->connection){
            die("Error, failed to connect to database ".  mysqli_error($this->connection));
        }         
}

public function add_query($query){
    $result=  mysqli_query($this->connection, $query);
    if(!$result){
        die("Error while adding query ".  mysqli_error($this->connection));
    }
    else{
        return $result;
    }
}

public function fetch_array($value){
    return $value->fetch_assoc();
}
}

$db=new Database(); 

我的代码一直运行到在 reception-m.php 中提交查询为止。通过 phpmyadmin 浏览表确认。但是返回 $db->insert_id;在 reception-m .php 中不起作用,我得到一个返回的空值(不是零)。

该表的 transaction_id 设置为 AUTO INCREMENT,所以我认为这不是问题所在。我担心我的 dbconnection-m.php,因为这不是用于解释 php 文档的那个。

请帮我解决这个问题...

编辑

1   transaction_id Primary  int(11) AUTO_INCREMENT  
2   start_date  date
3   end_date    date
4   status  enum('pending', 'completed')    
5   customer_id int(11)

最佳答案

更改我将指出的文件中的以下语法,因为可以在连接变量的帮助下以及在执行查询后获取最后插入的 ID。

接待处-m.php

替换:

return $db->insert_id; //Not Working

return $db->$connection->insert_id;

在此文件中,您必须进行以下更改。

数据库连接-m.php

替换:

class Database{
private $connection;

class Database{
protected $connection;

关于php - 将 mysql 最后插入的 id 作为链接变量返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39560169/

相关文章:

MySQL - 最后插入的 ID 的返回组

php - 如何更改 WooCommerce 产品的产品标签列表中的排序

PHP SQL 循环返回 PHP 代码

php - 我正在尝试从 MySQL 查询生成一个 HTML 表。这是我试图从 MySQL 查询 : 生成的表的格式

php - 语法错误,意外 'FIND_IN_SET' (T_STRING)

mysql - mysql中插入查询的问题

java - 从 MySQL 获取最后一个 id

php - 类 CI_DB_mysqli_result 的对象无法转换为字符串

php - 这个提议的 Router for Vanity-URLs 解决方案有什么问题?

java - 如何通过 MySQL Java Connector 设置 MySQL ANSI_QUOTES 模式?