2016-04-05 7 views
0

私はPDO接続を使用してテーブルに 'id'を挿入するためのクラスを持っているので、セッション変数にidというフォームデータを格納する必要があります。クラスとオブジェクトを使用してセッションでフォームデータを保存する

<?php 
    session_start(); 
    // this class is used to create connection with database 
    class Database 
    { 
     private $db_host = ‘localhost’; 
     private $db_user = ‘root’; 
     private $db_pass = ‘root’; 
     private $db_name = ‘test’; 


     public function connect() {    
      $db = new PDO('mysql:host=$db_host;dbname=$db_name;charset=utf8mb4', '$db_user', '$db_pass');   
      } 
    } 


    this class is used to insert the id in the table 

    class table1 extends Database 
    { 
      public function insert_info() 
      { 
        $sql = "insert into info(id) values ('?')"; 
        $sql->bind_param("s", $id); 
        $sql->execute(); 
        return true; 
      } 
    } 

    $_SESSION['campid']='camp1001'; 
    $db = new table1();  // it is used to object of class table1. 
    $res=$db->insert_info(); 

    ?> 

テーブルのセッション変数をどのように格納するか。

答えて

0

$_SESSION['campid']の値をinsert_info()にするのはなぜですか?

$_SESSION['campid']='camp1001'; 
$db = new table1();  // it is used to object of class table1. 
$res=$db->insert_info($_SESSION['campid']); 

と機能

class table1 extends Database 
{ 
     public function insert_info($id) // <-- add function param 
     { 
       $sql = "insert into info(id) values ('?')"; 
       $sql->bind_param("s", $id); 
       $sql->execute(); 
       return true; 
     } 
} 
0

方法にセッションを渡します。関数に変数を渡すこと。

$_SESSION['campid']='camp1001'; 
$db = new table1();  // it is used to object of class table1. 
$res=$db->insert_info($_SESSION['campid']); 

class table1 extends Database 
    { 
      public function insert_info($id) 
      { 
        $sql = "insert into info(id) values ('?')"; 
        $sql->bind_param("s", $id); 
        $sql->execute(); 
        return true; 
      } 
    } 

またはコンストラクタにセッション値を渡します。これは長くなりますが、特定の機会に使用されます。

$db = new table1($_SESSION['campid']); 
$res=$db->insert_info(); 

class table1 extends Database 
    { 
     public $id; 
      __construct($id){ 
       $this->id = $id; 
      } 
      public function insert_info() 
      { 
        $sql = "insert into info(id) values ('?')"; 
        $sql->bind_param("s", $this->id); 
        $sql->execute(); 
        return true; 
      } 
    } 
+0

constructor()またはinsert_info()で$ idを使用するかどうかは、モデルの用途によって異なります。モデルをミラーリングテーブルに使用する場合、パラメータをメソッド呼び出しに含める必要があります。 modelがデータベーステーブルのレコード(行)を表す場合、コンストラクタで$ idを使用します。 – Siffer

関連する問題