oturum tablosu?

3 Cevap php

Nasıl php veritabanına oturum [tablo] gönderebilir?

böyle.

session_start();
session_register('table');
$qty=$_POST[txtQty];
$pid=$_REQUEST[pid];
$data=@mysql_query("SELECT * from products where productid=".$pid,$con) or die(mysql_error());
$table=$_SESSION[table];
while($row=@mysql_fetch_array($data))
{   
    $table.='<tr><td>'.$row[name].'></td>
<td>'.$row[price].'</td><td>'.$qty.'</td><td>'.$row[price]*$qty.'</td>
<td>Delete</td></tr>';
    $_SESSION[table]=$table; 
}

Ben $ _SESSION [table] = $ tablo göndermek istiyorum; veritabanına

Gelişmiş ederim.

CCK

3 Cevap

Eğer $_SESSION bir önbelleğe sahip kullanmak gibi görünüyor, $_SESSION değişken yapmak için tasarlanmamıştır. Bu stoklama kullanıcı ilgili değişkenler için ve gerektiği / (hatta daha az) değerinde kilobayt olabilir.

Orada bazı önbellek mekanizması arıyorsanız memcached, APC, ve diğerleri.

Ayrıca benim yorumum dikkat edilecek $_SESSION[table] uyarı üretecek, $_SESSION['table'] gibi tırnak eklemek gerekir.

Ayrıca (yani error_reporting(E_ALL);), bu size daha kolay olası hata / sorunları bulmak için yardımcı olacağını uyarı maksimum düzeyde geliştirmek için iyi bir uygulamadır.

Senin nasılsa bir dizi olarak depolamak ve daha sonra döngü bu dizi düşündüm ve sonraki INSERT sorguları yapmak zorunda veritabanında $_SESSION['table'] geri koymak için.

İyi şanslar

Ben niyetleri ne tam emin değilim, ama oturumları çalışma şeklini değiştirmek isterseniz, kendi oturum işlevleri tanımlamak ve session_set_save_handler() ile bunları ayarlamak gerekir.

Bu sınıf değiştirme ve kullanabilir, bu DB oturumu tutar

class MySQLSession
{
  protected $resource = null;
  protected $db = 'base';
  protected $table = 'session';
  protected $id_col = 'sess_id';
  protected $data_col = 'sess_data';
  protected $time_col = 'sess_time';

  public function __construct($context, $parameters = null){
    session_set_save_handler(array($this, 'sessionOpen'),
                             array($this, 'sessionClose'),
                             array($this, 'sessionRead'),
                             array($this, 'sessionWrite'),
                             array($this, 'sessionDestroy'),
                             array($this, 'sessionGC'));

    session_start();
  }

  public function sessionClose(){
    return true;
  }

  public function sessionDestroy($id){
    $id = mysql_real_escape_string($id, $this->resource);
    $sql = 'DELETE FROM '.$this->table.' WHERE '.$this->id_col.' = \''.$id.'\'';
    if (@mysql_query($sql, $this->resource)){
      return true;
    }
    $error = 'MySQLSessionStorage cannot destroy session id "%s"';
    $error = sprintf($error, $id);
    throw new Exception($error);
  }

  public function sessionGC($lifetime){
    $sql = 'DELETE FROM '.$this->table.' '.
           'WHERE '.$this->time_col.' + INTERVAL '.$lifetime.' SECOND < NOW()';
    if (@mysql_query($sql, $this->resource)){
      return true;
    }
    $error = 'MySQLSessionStorage cannot delete old sessions';
    throw new Exception($error);
  }

  public function sessionOpen($path, $name){
    $this->resource = mysql_connect('host', 'user', 'pass', true);
    mysql_select_db($this->db, $this->resource);
    return true;
  }

  public function sessionRead($id){
    $id = mysql_real_escape_string($id, $this->resource);

    $sql = 'SELECT '.$this->data_col.' ' .
           'FROM '.$this->table.' ' .
           'WHERE '.$this->id_col.' = \''.$id.'\'';
    $result = @mysql_query($sql, $this->resource);
    if ($result != false && @mysql_num_rows($result) == 1){
      $data = mysql_fetch_row($result);
      return $data[0];
    }else{
      $sql = 'INSERT INTO '.$this->table.' ('.$this->id_col.', ' .
             $this->data_col.', '.$this->time_col.') VALUES (' .
             '\''.$id.'\', \'\', NOW())';

      if (@mysql_query($sql, $this->resource)){
        return '';
      }
      $error = 'MySQLSessionStorage cannot create new record for id "%s"';
      $error = sprintf($error, $id);
      throw new Exception($error);
    }
  }

  public function sessionWrite($id, &$data){
    $id   = mysql_real_escape_string($id, $this->resource);
    $data = mysql_real_escape_string($data, $this->resource);
    $sql = 'UPDATE '.$this->table.' ' .
           'SET '.$this->data_col.' = \''.$data.'\', ' .
           $this->time_col.' = NOW() ' .
           'WHERE '.$this->id_col.' = \''.$id.'\'';

    if (@mysql_query($sql, $this->resource)){
      return true;
    }
    $error = 'MySQLSessionStorage cannot write session data for id "%s"';
    $error = sprintf($error, $id);
    throw new Exception($error);
  }

  public function shutdown(){
  }
}