2009-11-24 5 views
0

Как я могу отправить session[table] в базу данных в PHP?Таблица сеансов базы данных?

Как что:

session_start(); 
session_register('table'); 
$qty=$_POST[txtQty]; 
$pid=$_REQUEST[pid]; 
[email protected]_query("SELECT * from products where productid=".$pid,$con) or die(mysql_error()); 
$table=$_SESSION[table]; 
while([email protected]_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; 
} 

Я хочу отправить $_SESSION[table]=$table; в базу данных.

+0

первым использованием '$ _SESSION [таблица]' будет производить некоторые предупреждения, и это своего рода плохо. – RageZ

ответ

1

Вы, кажется, используете $_SESSION, имеет кэш, переменная $_SESSION не предназначена для этого. Он предназначен для хранения переменных, связанных с пользователем, и должен/должен иметь килобайт (даже меньше).

Если вы ищете механизм кеширования, то memcached, APC и многие другие.

также следует отметить в моем комментарии $_SESSION[table] будет генерировать предупреждение, вы должны добавить котировки, такие как $_SESSION['table'].

Также рекомендуется разработать максимальный уровень предупреждения (т. Е. error_reporting(E_ALL);), это поможет вам легче найти возможные ошибки/проблемы.

Чтобы вернуть обратно $_SESSION['table'] в базу данных, вам нужно как-то сохранить его в виде массива, а затем цикл задумал этот массив и последует INSERT запросов.

Успехов

1

Я не совсем уверен, что эти намерения, но если вы хотите, чтобы изменить способ работы сессии вы должны будете определить свои собственные функции сессии и установить их с session_set_save_handler().

1

Вы можете модифицировать и использовать этот класс, он сохраняет сеанс в БД

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(){ 
    } 
} 
Смежные вопросы