2016-09-18 66 views
0

我有以下的PHP頁面。我需要將INSERT語句的最後一個插入的ID作爲鏈接變量返回到我的PHP頁面。我的代碼如下:?返回mysql最後插入ID作爲鏈接變量

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 
} 
} 
?> 

dbconnection-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;在接收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) 
+0

你可以添加表結構transaction_log? –

+0

你的類沒有'insert_id'屬性!?!?!??!?! **您應該在PHP錯誤日誌中發生錯誤** – RiggsFolly

+0

您正在編寫自己的類,但是您正在使用MYSQLI程序調用! **爲什麼?** – RiggsFolly

回答

1

變化的文件的語法如下,我會指出,自上次插入的ID可的幫助下得到連接變量和執行查詢之後。

接收m.php

替換:

return $db->insert_id; //Not Working 

return $db->$connection->insert_id; 

,並在這個文件中,你需要做以下更改。

DBConnection的-m.php

替換:

class Database{ 
private $connection; 

class Database{ 
protected $connection; 
+0

仔細看看[我的評論](http://stackoverflow.com/questions/39560169/return-mysql-last-insert-id-as-a- link-variable#comment66431102_39560169) – RiggsFolly

+0

回答這個問題......但是謝謝@RiggsFolly,我有一些嚴重的問題要解決 – user3889963

+0

@RiggsFolly。我已經根據您給出的兄弟的建議進行了更改:) –