使用类和对象php将表单数据存储在会话中


to store form data in sessions using classes and objects php

我有一个类,用于使用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();
    ?>

如何在表中存储会话变量将如何实现。

为什么不直接将$_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;
        }
}

将会话传递给方法。就像将变量传递给函数一样。

$_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;
            }
    }