猿问

PHP 代码中的错误导致更新所有用户的密码而不是相关用户的密码

我在我们的网站上遇到了一个严重的问题,需要一个解决方案。

所以基本上,在下面的代码中,我们将用户的电子邮件设置为数据库中的用户名,以及从 MOCK_DATA.csv 文件中获取的随机密码,并将其存储在数据库中。

但它会执行检查,因此如果数据库中不存在用户名,则会插入用户名和密码。如果用户名已经存在,则只需更新密码。

现在这里是下面的问题:


问题说明:

用户购买后,如果用户名已存在于数据库中,则该用户和数据库中所有其他用户的密码都会更新为该密码。

需要澄清的是,如果它是新用户,则不会发生这种情况。因此,如果电子邮件 abc@gmail.com 不在数据库中,abc@gmail.com 和密码 123456 将被插入到数据库中,并且数据库中的其他用户的密码都不会受到影响。

但是,如果我再次使用相同的电子邮件 abc@gmail.com 进行购买,该用户的密码将更新(假设为 654321),但数据库中所有其他用户的密码也将设置为 654321。

预期结果:

如果用户名已经存在,则密码只应为该单个用户更新。

实际结果:

所有用户的密码更新。


富国沪深
浏览 65回答 1
1回答

DIEA

因此,在 OP 和我之间的聊天中进行了长时间的讨论之后,得出的结论是该$username变量没有被填充,这反过来又使您的查询/更新因此而失败,我可能会默默地添加。另外,UPDATE 查询的iinmysqli_stmt_bind_param()从一开始也是一个问题,因为您试图使用一种integer格式存储字符串。
随时随地看视频慕课网APP
我要回答