【发布时间】:2020-07-05 11:31:18
【问题描述】:
我正在尝试在 php 网站上实现更改密码功能。这个想法是,详细信息存储在数据库中的注册会员可以通过输入旧密码然后输入两次新密码来更改密码。完成后,他们单击更改密码。但是,当单击它时,它会在屏幕上显示“查询不起作用”,这让我认为数据库连接下的“$query”有问题。谁能帮我这个?
<?php
session_start();
$user = $_SESSION['dohare11'];
if ($user)
{
if ($_POST['submit'])
{
//check fields
$oldpassword = md5($_POST['oldpassword']);
$newpassword = md5($_POST['newpassword']);
$repeatnewpassword = md5($_POST['repeatnewpassword']);
//check password against db
include("../connection/conn.php");
$query = "SELECT password FROM cityfestusers WHERE username='$user'";
mysqli_query($conn, $query) or die("Query didn't work");
$row = mysqli_fetch_assoc($query);
$oldpassworddb = $row['password'];
//check passwords
if ($oldpassword == $oldpassworddb) {
//check new passwords
if ($newpassword == $repeatnewpassword) {
//success
//change password in db
$change = "UPDATE cityfestusers SET password='$newpassword' WHERE username='$user'";
mysqli_query($conn, $change);
session_destroy();
die("Your password has been changed. <a href='index.php'>Return</a> to the main menu");
} else {
die("New passwords don't match");
}
} else {
die("Old password doesnt match!");
}
}
else
{
}
echo"
<form action='changepassword.php' method='POST'>
Old Password: <input type='text' name='oldpassword'><p>
New Password: <input type='password' name='newpassword'><br>
Repeat New Password: <input type='password' name='repeatnewpassword'><br>
<input type='submit' name='submit' value='Change Password'>
</form>
";
}
编辑/// 我已将查询语句更新为以下内容并收到错误:'mysqli_fetch_assoc() 期望参数 1 为 mysqli_result,bool 在...第 23 行中给出 ($row = mysqli_fetch_assoc($result);) 旧密码不匹配' 这是我引用查询语句的更新代码
$query = "SELECT password FROM cityfestusers WHERE username='$user'";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_assoc($result);
$oldpassworddb = $row['password'];
...
//check passwords
if ($oldpassword == $oldpassworddb) {
//check new passwords
if ($newpassword == $repeatnewpassword) {
//success
//change password in db
$update = "UPDATE cityfestusers SET password='$newpassword' WHERE username='$user'";
$result = mysqli_query($conn, $update);
$row = mysqli_fetch_assoc($result);
session_destroy();
die("Your password has been changed. <a href='index.php'>Return</a> to the main menu");
} else {
die("New passwords don't match");
}
} else {
die("Old password doesnt match!");
}
}
否则 {
【问题讨论】:
-
您可以从使用准备好的语句开始,请参阅stackoverflow.com/questions/60174/…,也许问题会由此解决
标签: php html mysql select passwords