php - 使用 AJAX 从 SQL 数据库更新存储在 $_SESSION 数据中的用户配置文件

标签 php mysql sql session

我目前正在创建一个网站(这是我的新手),并且我添加了存储在 session 中的单独配置文件。配置文件存储在 SQL 数据库中,在我进入“编辑配置文件”页面之前,一切都进行得很顺利。就像在大多数网站中一样,我希望具有编辑您的个人资料信息(例如一页上的用户地址)的功能。

例如,如果有人想编辑他们的电子邮件,这是我设置的表单。显示的电子邮件是通过 session ID 显示的用户电子邮件,但我如何更新实际的 SQL 数据库?我在网页设计方面的经验非常有限。

<label>Primary E-Mail:</label>
<span id="pemail" class="datainfo"><?php echo $_SESSION['user_email']; ?></span>
<a href="#" class="editlink">Edit Info</a>
<a class="savebtn">Save</a>

在数据库中,我想更新的字段也将是 user_email,它会在与 session user_name(无论谁登录)对应的行中。用户邮箱的session信息是通过:

$_SESSION['user_email'] = $result_row->user_email;

不确定这是否有帮助,但由于我一直在拼凑来自各地的代码并试图使其适合我的网站,我不妨也分享电子邮件的注册字段:

$user_email = $this->db_connection->real_escape_string(strip_tags($_POST['user_email'], ENT_QUOTES));

一些更多的注册:

$sql = "INSERT INTO users (user_name, user_password_hash, user_email, landlord, user_address, user_phone_number) VALUES ('" . $user_name . "', '" . $user_password_hash . "', '" . $user_email . "', '" . 1 . "', '" . $user_address . "', '" . $user_phone_number . "')";
$query_new_user_insert = $this->db_connection->query($sql);

// if user has been added successfully
if ($query_new_user_insert) {
$this->messages[] = '<p class="login_text">Your account has been created successfully. You can now log in.</p>';

我已经尝试制作这个编辑个人资料页面很长时间了,它在纸面上看起来很简单,但似乎没有任何效果。对于这个可能非常愚蠢的问题,我深表歉意。

tl;dr:如何根据我在网站上的 session 登录来编辑 SQL 数据库中的值?

最佳答案

一些想法:
我相信你的数据库中有一个唯一的 user_id,所以你只需要在每次用户登录时将 user_id 存储在 $_SESSION[] 中,并在他注销时清除它。然后当你需要用户数据时,你应该查询数据库做这样的事情:

 SELECT user_email, other_column FROM users WHERE user_id = $_SESSION['user_id']

如果这样做,当您必须更新用户信息时,您会将当前 user_id 存储在 $_SESSION['user_id'] 中,因此您必须在 MySQL 中执行 UPDATE。像这样的东西:

UPDATE users SET user_email= ' The new email from php goes here '

关于php - 使用 AJAX 从 SQL 数据库更新存储在 $_SESSION 数据中的用户配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21994209/

相关文章:

mysql - 学说:预期 Lexer::T_MEMBER,得到 '='

php - 在 php 准备语句中从另一个字符串添加到数组

mysql - 如何在表中添加新列作为主键?

php - 生成从 mysql ID 获取下一个唯一编号

php - mysqli_fetch_assoc - 如果同时更改数据会怎样?

mysql - go mysql 返回空值

sql - 这个 PL/SQL 触发器有什么问题?

sql - 我如何加入 msdb.dbo.sysoperators 和 msdb.dbo.sysalerts?

PHP POST 和 GET 在同一页面上

javascript - 没有JQUERY的使用AJAX发送表单数据的POST方法