根据从 MySQL 中提取的一个值创建 PHP 会话变量
Posted
技术标签:
【中文标题】根据从 MySQL 中提取的一个值创建 PHP 会话变量【英文标题】:Creating a PHP session variable based on one value pulled from MySQL 【发布时间】:2021-07-27 04:59:00 【问题描述】:这是一个学校项目,我正在创建一个实施奖励系统的电子商务网站。我正在使用 phpMyAdmin 连接到 mysql 服务器。
基本上,我想根据客户当前登录拥有的奖励积分创建一个会话变量。换句话说,会话变量的值将等于 MySQL 数据库中特定客户记录中显示的奖励积分数。如果值为 NULL,我会将变量 = 设置为零。
任何见解将不胜感激。
谢谢!
【问题讨论】:
随着时间的推移,这将不准确,如果最终用户在查询后获得积分,则不会更新会话。为什么不将其作为用户模型的一部分进行查询?这似乎有点矫枉过正。 【参考方案1】:在此处使用会话并不能保证数据完整性:如果在查询后增加或减少积分,您的会话将不会更新。
相反,INNER JOIN
将您的表放在一起并将其附加到您的用户模型 (MVC)。
示例(假设您的表格):
$stmt = (new PDO('...', ['...']))->prepare('SELECT u.id, u.column, r.points FROM users u INNER JOIN rewards r ON r.id = u.ud WHERE u.id = ?');
$stmt->execute([(int) $someUserId]);
$user = $stmt->fetch(PDO::FETCH_OBJ);
现在你可以像平常一样使用你的用户模型了:
$user->column; // Normal
$user->points // Joint Table
See an example of how to construct it on 3v4l
【讨论】:
以上是关于根据从 MySQL 中提取的一个值创建 PHP 会话变量的主要内容,如果未能解决你的问题,请参考以下文章