我的更新查询不起作用
My update queries won't work
我已经建立了基本的注册、登录、个人资料页面网页并 运行ning 并且最近开始实施忘记密码功能。
一切似乎 运行ning,但我的更新查询似乎没有触发。
例如,如果电子邮件地址和内容匹配,我忘记密码页面上的代码会创建一个新的重置密钥,然后通过电子邮件将代码发送到 link(即 www.mydomain.net/forgotpassword.php?key=xxx).
页面测试登陆时是否有按键,代码如下:
include ('database_connection.php');
session_start();
if($_GET['key'])
{
$key = $_GET['key'];
$query_check_key = "SELECT * FROM password_reset WHERE Reset_link='$key' AND Expiration>=NOW() AND used=0";
$result_check_key = mysqli_query($dbc, $query_check_key);
$result_check_row = $result_check_key->fetch_array(MYSQLI_ASSOC);
if(!$result_check_key) {
echo "Error";
}
if (mysqli_num_rows($result_check_key) == 1)
{
// Update the database to set the "used" field to 1
$query_link_used = "UPDATE password_reset SET Used=1 WHERE Reset_link='$key'";
$result_link_used = mysqli_query($dbc, $query_activate_account) ;
$_SESSION['Memberid'] = $result_check_row['Memberid'];
header("Location: reset_password.php");
}
}
当我尝试此操作时,if 语句的计算结果为真,因为页面被重定向到 reset_password.php 并且会话已成功正确创建。但是当我检查数据库时 table Used 字段还没有更新。
类似地,在 reset_password.php 页面上,更新查询也不起作用:
if (empty($error))
{
//Query to change password
$query_change_password = "UPDATE members SET Password=$hashed_password WHERE Memberid=$Memberid";
$result_change_password = mysqli_query($dbc, $query_change_password);
if (mysqli_affected_rows($dbc) > 0)//if update query was successful
{
echo '<div class="success">Your password has now been reset. You may now <a href="login.php">Log in</a></div>';
} else
{
echo '<div class="errormsgbox">Oops !Your password could not be reset. Please contact the system administrator.</div>';
}
mysqli_close($dbc);
}
错误数组肯定是空的,检查受影响行的 if 语句仍然为 0,因为该语句 returns 为 false 并回退到 else 语句。
我已经 运行 PHPMyAdmin 中的查询,它们工作正常,所以我看不出是什么问题。非常感谢任何帮助。
在您的 reset_password.php 页面中启动会话并更新查询字符串:
session_start();
if (empty($error))
{
$Memberid = $_SESSION['Memberid'];
//Query to change password
$query_change_password = "UPDATE members SET Password='$hashed_password' WHERE Memberid='$Memberid'";
我已经建立了基本的注册、登录、个人资料页面网页并 运行ning 并且最近开始实施忘记密码功能。
一切似乎 运行ning,但我的更新查询似乎没有触发。
例如,如果电子邮件地址和内容匹配,我忘记密码页面上的代码会创建一个新的重置密钥,然后通过电子邮件将代码发送到 link(即 www.mydomain.net/forgotpassword.php?key=xxx).
页面测试登陆时是否有按键,代码如下:
include ('database_connection.php');
session_start();
if($_GET['key'])
{
$key = $_GET['key'];
$query_check_key = "SELECT * FROM password_reset WHERE Reset_link='$key' AND Expiration>=NOW() AND used=0";
$result_check_key = mysqli_query($dbc, $query_check_key);
$result_check_row = $result_check_key->fetch_array(MYSQLI_ASSOC);
if(!$result_check_key) {
echo "Error";
}
if (mysqli_num_rows($result_check_key) == 1)
{
// Update the database to set the "used" field to 1
$query_link_used = "UPDATE password_reset SET Used=1 WHERE Reset_link='$key'";
$result_link_used = mysqli_query($dbc, $query_activate_account) ;
$_SESSION['Memberid'] = $result_check_row['Memberid'];
header("Location: reset_password.php");
}
}
当我尝试此操作时,if 语句的计算结果为真,因为页面被重定向到 reset_password.php 并且会话已成功正确创建。但是当我检查数据库时 table Used 字段还没有更新。
类似地,在 reset_password.php 页面上,更新查询也不起作用:
if (empty($error))
{
//Query to change password
$query_change_password = "UPDATE members SET Password=$hashed_password WHERE Memberid=$Memberid";
$result_change_password = mysqli_query($dbc, $query_change_password);
if (mysqli_affected_rows($dbc) > 0)//if update query was successful
{
echo '<div class="success">Your password has now been reset. You may now <a href="login.php">Log in</a></div>';
} else
{
echo '<div class="errormsgbox">Oops !Your password could not be reset. Please contact the system administrator.</div>';
}
mysqli_close($dbc);
}
错误数组肯定是空的,检查受影响行的 if 语句仍然为 0,因为该语句 returns 为 false 并回退到 else 语句。
我已经 运行 PHPMyAdmin 中的查询,它们工作正常,所以我看不出是什么问题。非常感谢任何帮助。
在您的 reset_password.php 页面中启动会话并更新查询字符串:
session_start();
if (empty($error))
{
$Memberid = $_SESSION['Memberid'];
//Query to change password
$query_change_password = "UPDATE members SET Password='$hashed_password' WHERE Memberid='$Memberid'";