无法解决问题。问题以**开始,以**结束,问题行就在其后。请帮助我修复代码,似乎问题太多了。非常抱歉。
<?php
include 'core/login.php';
include 'core/init.php';
include 'includes/head.php';
if(count($_POST)>0) {
$result = mysqli_query("SELECT *from users WHERE id='" . $_SESSION["id"] . "'");
$row=mysqli_fetch_array($result);
if($_POST["currentPassword"] == $row["password"])
{
mysqli_query("UPDATE users set password='" . $_POST["newPassword"] . "' WHERE id='" . $_SESSION["id"] . "'");
$message = "Password Changed";
}
else
$message = "Current Password is not correct";
}
?>
我得到的错误是:
expects 2 parameters, 1 given / 1 parameter to be mysqli result, null given
undefined variable result
undefined currentpassword
undefined new password / expects 2 parameters, 1 given
让我们从读取错误消息开始:
期望2个参数,1个给定/1个参数为mysqli结果,空给定
因此函数需要2个参数。你给它提供。。。
mysqli_query("SELECT *from users WHERE id='" . $_SESSION["id"] . "'")
一个参数。mysqli_query()
也需要被赋予连接对象:
mysqli_query($connection, "SELECT *from users WHERE id='" . $_SESSION["id"] . "'")
(或您的连接对象的名称)
未定义变量结果
创建$result
的操作失败,因此任何使用$result
的操作也将失败。
未定义的当前密码
这表明POST数据不包含您要查找的值。在尝试使用某个值之前,可以使用isset()
来确定该值是否存在。
未定义的新密码/需要2个参数,给定 1个
与上述问题相同。
此外,还有两个问题你没有注意到。。。
"UPDATE users set password='" . $_POST["newPassword"] . "' WHERE id='" . $_SESSION["id"] . "'"
- 您的代码对SQL注入攻击非常开放
- 您正在以纯文本形式存储用户密码
这两个都是极其糟糕的事情,应该立即修复。
mysqli_query函数期望第一个参数是mysqli链接标识符。在代码中,第一个参数是SQL语句(即字符串)。
函数mysqli_connect()返回链接标识符,您可能在init.php脚本中使用了该函数。
示例:
$link = mysqli_connect("localhost", "root", "", "info");
$result = mysqli_query($link, $sql);
您的mysqli_query
不正确,它需要第二个参数,即连接字符串。试试这样的东西:
$con = mysqli_connect("HOST","USERNAME","PASSWORD","DATABASE");
mysqli_query($con, "SELECT *from users WHERE id='" . $_SESSION["id"] . "'")
用此代码修复了它。。。现在唯一的问题是它并没有改变。至少错误已经消失了,现在就这么玩吧。
<?php
include 'core/login.php';
include 'core/init.php';
include 'includes/head.php';
if(count($_POST)>0) {
$result = mysqli_query($link, "SELECT *from users WHERE id='" . $_SESSION["id"] . "'");
$row=mysqli_fetch_array($result);
if($_POST["currentpassword"] == $row["password"]) {
mysqli_query("UPDATE users set password='" . $_POST["newpassword"] . "' WHERE id='" . $_SESSION["id"] . "'");
$message = "Password Changed";
} else $message = "Current Password is not correct";
}
?>