2016-09-18 2 views
0

私は以下のPHPページを持っています。私はリンク変数として私のPHPページにINSERTステートメントの最後に挿入されたIDを返す必要があります。次のように私のコードは次のとおりです。mysqlの最後のinsert 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(); 

私のコードは、受信-m.phpでクエリが送信されるポイントまで機能します。テーブルのphpmyadminブラウズで確認。しかし、$ db-> insert_idを返します。受信時に - m .phpが機能せず、空の値が返されます(ゼロではありません)。

テーブルのtransaction_idがAUTO INCREMENTに設定されているため、それは問題ではないと思います。私はdbconnection-m.phpに懸念しています。これはphpドキュメントの説明に使用されているものではありません。

EDIT

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

class Database{ private $connection; 

はあなたがtransaction_logのテーブル構造を追加することはできますか? –

+0

あなたのクラスは 'insert_id'プロパティを持っていません!?!?!??!?! **あなたはPHPエラーログ** – RiggsFolly

+0

であなたは自分のクラスを書くが、あなたはMYSQLI手続き呼び出しを使用しているエラーを取得する必要があります! ** WHY?** – RiggsFolly

答えて

1

変更最後に挿入idはの助けを借りて取得することができますので、私は指摘するファイルで次の構文...私はこの問題を把握助けてくださいクエリが実行された後に実行されます。

受信m.php

を交換してください:

return $db->insert_id; //Not Working 

return $db->$connection->insert_id; 

とし、このファイルに次の変更を行う必要があります。

のDBConnection-m.php

置き換え:

class Database{ 
protected $connection; 
+0

[私のコメント](http://stackoverflow.com/questions/39560169/return-mysql-last-insert-id-as-a-リンク変数#comment66431102_39560169) – RiggsFolly

+0

質問にお答えします...ありがとう@RiggsFolly、私は – user3889963

+0

@ RiggsFollyに対処するいくつかの深刻な問題があります。私はあなたが仲間を与えた提案に従って変更しました:) –

関連する問題