Пишется только одна переменная в БД

ss25_satana

Новичок
Пишется только одна переменная в БД

Взял этот код с сайта пхп ипсправил для работы с PostgreSQL.

таблица для БД.

CREATE TABLE ws_sessions (
session_id character varying(255) DEFAULT ''::character varying NOT NULL,
session_expires integer DEFAULT 0 NOT NULL,
session_data text
);

В ячейку session_data записывается только одна переменная. Почему? Что не так?

Версия пхп 5.2.0 установлен как CGI
Apache/2.2.3 (Win32)

PHP:
class Session { 
   // session-lifetime 
   var $lifeTime; 
   // pg-handle 
   var $dbHandle;
    
   function __construct() {
       // get session-lifetime 
       $this->lifeTime = get_cfg_var("session.gc_maxlifetime"); 
       // open database-connection 
       $this->dbHandle = pg_connect("host=localhost dbname=mydb user=postgres password=****");
	   
	   session_set_save_handler(array(&$this,"open"), 
                                array(&$this,"close"), 
                                array(&$this,"read"), 
                                array(&$this,"write"), 
                                array(&$this,"destroy"), 
                                array(&$this,"gc")); 
       session_start(); 	
   }
   
   function open($savePath, $sessName) { 
	return(true);       
   } 
   
   function close() { 
       $this->gc(ini_get('session.gc_maxlifetime')); 
       // close database-connection 
       return pg_close($this->dbHandle); 
   }
    
   function read($sessID) { 
       // fetch session-data 
       $result = pg_query("SELECT session_data  FROM ws_sessions 
                           WHERE session_id = '$sessID' 
                           AND session_expires > ".time()); 
       // return data or an empty string at failure 
       if($row = pg_fetch_array($result)) 
           return $row['session_data']; 
       return ""; 
   }
    
   function write($sessID,$sessData) { 
       // new session-expire-time 
       $newExp = time() + $this->lifeTime; 
       // is a session with this id in the database? 
       $res = pg_query("SELECT * FROM ws_sessions 
                           WHERE session_id = '$sessID'"); 
       // if yes, 
       if(pg_num_rows($res)) { 
           // ...update session-data 
           $result= pg_query("UPDATE ws_sessions 
                         SET session_expires = '$newExp', 
                         session_data = '$sessData' 
                         WHERE session_id = '$sessID'"); 
           // if something happened, return true 
           if(pg_affected_rows($result)) 
               return true; 
       } 
       // if no session-data was found, 
       else { 
           // create a new row 
           $result = pg_query("INSERT INTO ws_sessions ( 
                         session_id, 
                         session_expires, 
                         session_data) 
                         VALUES( 
                         '$sessID', 
                         '$newExp', 
                         '$sessData')"); 
           // if row was created, return true 
           if(pg_affected_rows($result)) 
               return true; 
       } 
       // an unknown error occured 
       return false; 
   }
    
   function destroy($sessID) { 
       // delete session-data 
       $result = pg_query("DELETE FROM ws_sessions WHERE session_id = '$sessID'"); 
       // if session was deleted, return true, 
       if(pg_affected_rows($result)) 
           return true; 
       // ...else return false 
       return false; 
   }
    
   function gc($sessMaxLifeTime) { 
       // delete old sessions 
       $result = pg_query("DELETE FROM ws_sessions WHERE session_expires < ".time()); 
       // return affected rows 
       return pg_affected_rows($result); 
   } 
} 

$session = new Session(); 
$_SESSION['test'] = "34563456435";
$_SESSION['2345'] = "ret45t45ger";
$_SESSION['werg'] = "ghrty4564tgr";
 

Фанат

oncle terrible
Команда форума
Скажи, чего ты ожидал, публикуя этот код на форуме?
Что кто-то будет читать его построчно, интерпретируя его в голове или что кто-то создаст все таблицы, запустит код у себя и начнет его отлаживать на компе?
 

ss25_satana

Новичок
Автор оригинала: Фанат
Скажи, чего ты ожидал, публикуя этот код на форуме?
Что кто-то будет читать его построчно, интерпретируя его в голове или что кто-то создаст все таблицы, запустит код у себя и начнет его отлаживать на компе?
Что кто нибудь сталкивался с такой проблемой и поможет решить ее.
 

Фанат

oncle terrible
Команда форума
С какой? что "в ячейку пишется только одна переменная"?
во-первых, непонятна вообще суть проблемы. почему в ячейку должно писаться больше одной переменной?
во-вторых, ВСЕ сталкивались. и с тем что пишется только одна, и с тем, что пишется больше одной, и с тем, что вообще ничего не пишется.
вся работа программиста - это столкновения с проблемами. собственно, только этим он и занимается. только непонятно, как решение проблемы в одном коде может помочь с решением проблемы совсем в другом.

-~{}~ 11.06.07 12:23:

ты проверял перед "записью в ячейку", ЧТО ты туда записываешь?
 
Сверху