您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

无法将php的session存入数据库

2024/4/15 17:57:12发布16次查看
0){ ini_set('session.auto_start',0);}function zen_session_open(){ global $zen_session_db; $zen_session_db = new mysqli('localhost','root','wh36524','phptest'); return true;}function zen_session_close(){ global $zen_session_db; return $zen_session_db -> close();}function zen_session_read($sid){ global $zen_session_db; $sql = 'select session_value from sessions where session_id='.$sid.''; $query = $zen_session_db->query($sql); if($zen_session_db -> errno) { die($zen_session_db->error); } if($query -> num_rows == 1) { $data = $query->fetch_assoc(); return $data['session_value']; } else { return ; }}function zen_session_write($sid,$data){ global $zen_session_db; $sql = 'select count(*) from sessions where session_id='.$sid.''; $query = $zen_session_db->query($sql); if($zen_session_db->errno) { die($zen_session_db->error); } if($query->num_rows > 0) { $sql = 'update session set session_value='.$data.',expire='.(time()+60*60).' where session_id='. $sid.''; $zen_session_db->query($sql); } else { $sql = 'insert into session values('.$sid.','.(time()+60*60).','.$data.')'; $zen_session_db->query($sql); } /* if($zen_session_db->affected_rows > 0) { return true; } else { return false; } */ return true;}function zen_session_destroy($sid){ global $zen_session_db; $sql = 'delete from session where session_id='.$sid.''; $zen_session_db->query($sql); $_session = array(); return true;}function zen_session_gc($time){ global $zen_session_db; $sql = 'delete from session where expire query($sql); return true;}session_set_save_handler('zen_session_open','zen_session_close','zen_session_read','zen_session_write', 'zen_session_destroy','zen_session_gc' );session_name('zenid');session_start();$_session['age'] = 16;$_session['color'] = 'green';session_write_close();

不知道怎么回事,比到参考书写的,但是就是无法实现在数据库存储啊,我在另外一个页面拷贝了上面的代码,然后打印$_session数组,但是是空的,不知道是哪里的问题?
0){ ini_set('session.auto_start',1);}function zen_session_open(){ global $zen_session_db; $zen_session_db = new mysqli('localhost','root','wh36524','phptest'); return true;}function zen_session_close(){ global $zen_session_db; return $zen_session_db -> close();}function zen_session_read($sid){ global $zen_session_db; $sql = 'select session_value from sessions where session_id='.$sid.''; $query = $zen_session_db->query($sql); if($zen_session_db -> errno) { die($zen_session_db->error); } if($query -> num_rows == 1) { $data = $query->fetch_assoc(); return $data['session_value']; } else { return ; }}function zen_session_write($sid,$data){ global $zen_session_db; $sql = 'select count(*) from sessions where session_id='.$sid.''; $query = $zen_session_db->query($sql); if($zen_session_db->errno) { die($zen_session_db->error); } if($query->num_rows > 0) { $sql = 'update session set session_value='.$data.',expire='.(time()+60*60).' where session_id='. $sid.''; $zen_session_db->query($sql); } else { $sql = 'insert into session values('.$sid.','.(time()+60*60).','.$data.')'; $zen_session_db->query($sql); } /* if($zen_session_db->affected_rows > 0) { return true; } else { return false; } */ return true;}function zen_session_destroy($sid){ global $zen_session_db; $sql = 'delete from session where session_id='.$sid.''; $zen_session_db->query($sql); $_session = array(); return true;}function zen_session_gc($time){ global $zen_session_db; $sql = 'delete from session where expire query($sql); return true;}session_set_save_handler('zen_session_open','zen_session_close','zen_session_read','zen_session_write', 'zen_session_destroy','zen_session_gc' );session_name('zenid');session_start();//$_session['age'] = 16;//$_session['color'] = 'green';print_r($_session);session_write_close();

回复内容: 0){ ini_set('session.auto_start',0);}function zen_session_open(){ global $zen_session_db; $zen_session_db = new mysqli('localhost','root','wh36524','phptest'); return true;}function zen_session_close(){ global $zen_session_db; return $zen_session_db -> close();}function zen_session_read($sid){ global $zen_session_db; $sql = 'select session_value from sessions where session_id='.$sid.''; $query = $zen_session_db->query($sql); if($zen_session_db -> errno) { die($zen_session_db->error); } if($query -> num_rows == 1) { $data = $query->fetch_assoc(); return $data['session_value']; } else { return ; }}function zen_session_write($sid,$data){ global $zen_session_db; $sql = 'select count(*) from sessions where session_id='.$sid.''; $query = $zen_session_db->query($sql); if($zen_session_db->errno) { die($zen_session_db->error); } if($query->num_rows > 0) { $sql = 'update session set session_value='.$data.',expire='.(time()+60*60).' where session_id='. $sid.''; $zen_session_db->query($sql); } else { $sql = 'insert into session values('.$sid.','.(time()+60*60).','.$data.')'; $zen_session_db->query($sql); } /* if($zen_session_db->affected_rows > 0) { return true; } else { return false; } */ return true;}function zen_session_destroy($sid){ global $zen_session_db; $sql = 'delete from session where session_id='.$sid.''; $zen_session_db->query($sql); $_session = array(); return true;}function zen_session_gc($time){ global $zen_session_db; $sql = 'delete from session where expire query($sql); return true;}session_set_save_handler('zen_session_open','zen_session_close','zen_session_read','zen_session_write', 'zen_session_destroy','zen_session_gc' );session_name('zenid');session_start();$_session['age'] = 16;$_session['color'] = 'green';session_write_close();

不知道怎么回事,比到参考书写的,但是就是无法实现在数据库存储啊,我在另外一个页面拷贝了上面的代码,然后打印$_session数组,但是是空的,不知道是哪里的问题?
0){ ini_set('session.auto_start',1);}function zen_session_open(){ global $zen_session_db; $zen_session_db = new mysqli('localhost','root','wh36524','phptest'); return true;}function zen_session_close(){ global $zen_session_db; return $zen_session_db -> close();}function zen_session_read($sid){ global $zen_session_db; $sql = 'select session_value from sessions where session_id='.$sid.''; $query = $zen_session_db->query($sql); if($zen_session_db -> errno) { die($zen_session_db->error); } if($query -> num_rows == 1) { $data = $query->fetch_assoc(); return $data['session_value']; } else { return ; }}function zen_session_write($sid,$data){ global $zen_session_db; $sql = 'select count(*) from sessions where session_id='.$sid.''; $query = $zen_session_db->query($sql); if($zen_session_db->errno) { die($zen_session_db->error); } if($query->num_rows > 0) { $sql = 'update session set session_value='.$data.',expire='.(time()+60*60).' where session_id='. $sid.''; $zen_session_db->query($sql); } else { $sql = 'insert into session values('.$sid.','.(time()+60*60).','.$data.')'; $zen_session_db->query($sql); } /* if($zen_session_db->affected_rows > 0) { return true; } else { return false; } */ return true;}function zen_session_destroy($sid){ global $zen_session_db; $sql = 'delete from session where session_id='.$sid.''; $zen_session_db->query($sql); $_session = array(); return true;}function zen_session_gc($time){ global $zen_session_db; $sql = 'delete from session where expire query($sql); return true;}session_set_save_handler('zen_session_open','zen_session_close','zen_session_read','zen_session_write', 'zen_session_destroy','zen_session_gc' );session_name('zenid');session_start();//$_session['age'] = 16;//$_session['color'] = 'green';print_r($_session);session_write_close();

提问应该尽可能多的提供线索,比如你的 sql 语句是什么样的,这样别人在测试的时候方便多了,我现在还需要自己来创建:
sqlcreate table `session` ( `session_id` char(128) default null, `expire` int(11) default null, `session_value` text) engine=myisam default charset=utf8
环境信息也尽可能的提供,比如我的代码可以运行在 php 5.5.16-pl0-gentoo
问题1、你的表名有问题,读的时候用了,sessions ; 写的时候是用的 session
问题2、貌似通过 open 方法时打开的数据库链接在其它地方用不了,(这个原因我也不清楚,后面可以了解下为什么),去官方看了下,都是使用的 class 来完成的。所以把你的改成了 oop 的形式测试可用。
0){ ini_set('session.auto_start',0);}class mysqlsessionhandler implements sessionhandlerinterface{private $_db;public function close(){ return $this->_db->close();}public function destroy($sessionn_id){ $sql = 'delete from sessions where session_id='.$session_id.''; $this->_db->query($sql); $_session = array(); return true;}public function gc($maxlifetime){ $sql = 'delete from sessions where expire query($sql); return true;}public function open($save_path, $name){ $this->_db = new mysqli('localhost','root','password','test'); return (boolean)$this->_db;}public function read($session_id){ $sql = 'select session_value from sessions where session_id='.$session_id.''; $query = $this->_db->query($sql); if($this->_db->errno) { die($this->_db->error); } if($query -> num_rows == 1) { $session_data = $query->fetch_assoc(); return $session_data['session_value']; } else { return ; }}public function write($session_id, $session_data){ $sql = 'select count(*) as count from sessions where session_id='.$session_id.''; $query = $this->_db->query($sql); $result = $query->fetch_assoc(); if($this->_db->errno) { die($this->_db->error); } if($result['count'] > 0) { $sql = 'update sessions set session_value=\''.$session_data.'\',expire='.(time()+60*60).' where session_id='. $session_id.''; $this->_db->query($sql); } else { $sql = 'insert into sessions values('.$session_id.','.(time()+60*60).',\''.$session_data.'\')'; $this->_db->query($sql); } if($this->_db->affected_rows > 0) { return true; } else { return false; } }}$handler = new mysqlsessionhandler;session_set_save_handler($handler, true);session_name('zenid');session_start();$_session['age'] = 17;$_session['color'] = 'green';$_session['color2'] = 'red';
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product