根据从 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 会话变量的主要内容,如果未能解决你的问题,请参考以下文章

我正在尝试根据参数从关系表中提取最后一个值

从 MySQL JSON 列中提取 JSON 对象的值作为数组

从数据库中获取字段的实时值(Mysql)

从多个mysql表中提取数据

使用php从mysql中提取名称的随机顺序

MySQL 查询从表中检索数据和第二个查询以提取其他结果,没有重复