gpt4 book ai didi

PHP SQL查询密码必须等于列名才有效,不是实际值?

转载 作者:搜寻专家 更新时间:2023-10-31 20:44:00 25 4
gpt4 key购买 nike

我有一个有点奇怪的问题,我真的不知道为什么会这样。首先,我尝试使用运行正常的 php 访问数据库。它可以毫无故障地访问它(已检查),所以我很确定它的那个区域是正确的。

我正在使用 php 代码访问查询:

mysqli_query($database, "SELECT * FROM user WHERE username = $username AND password =     $password");

它正在访问数据库:

The Database Definition

所以问题来了。我正在尝试使用用户名和密码登录。如果我输入错误的用户名,它会拾取并拒绝它,所以用户名部分没有问题。但是,如果我使用正确的用户名和密码,它仍然会因为密码而拒绝它。但是,如果我使用正确的用户名和密码“password”(与列名相同,我已经用不同的列名尝试过,效果相同),只要用户名正确,它就可以工作。

以前,我使用 echo 来确保我输入的用户名和密码都已收到,而且确实收到了。

最佳答案

改变

mysqli_query($database, "SELECT * FROM user WHERE username = $username AND password = $password");

到:

mysqli_query($database, "SELECT * FROM user WHERE username = '$username' AND password = '$password'");

即在您的字符串周围加上引号。

您实际上可能从数据库返回了一个错误...所以您也应该检查一下。

编辑: 另外请注意@MarcelKorpel 关于 SQL 注入(inject)的评论/警告。我上面的解决方案纠正了你的语法错误。 Marcel 的警告纠正了您的方法中的错误 ;-) 重点是如果 $username$password 字符串未经过清理,则可以(例如)输入 SQL 代码由最终用户有效地将您的查询字符串更改为(您)可能(可能)恶意的东西。

关于PHP SQL查询密码必须等于列名才有效,不是实际值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15613615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com