- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为 SessionHandlerInterface 类 使用以下写入方法:
public function write($session_id, $session_data) {
$sth = DBCxn::get()->prepare("UPDATE sessions SET session_data = ?, last_update = NOW() WHERE session_id = ?");
$sth->execute(array($session_data, $session_id));
if ($sth->rowCount() == 0) {
$sth = DBCxn::get()->prepare("INSERT INTO sessions (session_id, session_data, last_update) VALUES (?, ?, NOW())");
$sth->execute(array($session_id, $session_data));
}
问题在于,如果更新查询的session_data
没有改变,rowCount()
会返回0,反过来函数会尝试插入一个 session_id
已经存在并返回错误。
我想做一个选择查询来验证 session_id
是否存在的解决方案。
还有哪些替代方法可以用来解决这个问题?
最佳答案
read()
在 write()
之前调用(在 session 开始时),您将有一个 SELECT
查询在那里。
因此,您已经知道是否应该执行 INSERT
或 UPDATE
- 只需使用一个属性作为“行存在”标志,这是您从内部设置的read()
,您稍后可以在 write()
中检查它。
关于php - SessionHandlerInterface 写方法替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35158792/
我正在为 SessionHandlerInterface 类 使用以下写入方法: public function write($session_id, $session_data) { $st
所以我创建了一个实现 SessionhandlerInterface 的类并将其设置为 session 处理程序: $sessionHandler = new SessionHandler(); se
介绍 自 PHP 5.5.2 起,有一个运行时配置选项 ( session.use_strict_mode ) 旨在防止恶意客户端进行 session 固定。当启用此选项并且 native sessi
我按照 http://www.php.net/manual/en/class.sessionhandlerinterface.php 制作了以下代码 和 http://www.wikihow.com/
PHP session 逻辑有两个不同的 SessionHandlerInterface和 SessionUpdateTimestampHandlerInterface SessionUpdateTi
重新安装我的 wamp 环境后,在我打开 app_dev.php 后屏幕上显示此错误消息: Fatal error: Cannot redeclare class SessionHandlerInte
我是一名优秀的程序员,十分优秀!