我试图创建一个PHP页面来生成密码并使用数据库中的新密码更新记录。数据库上有两个表我必须检查用户是否存在,我不确定更新字段所需的MySQL。以下是我到目前为止的情况:
if (isset($_POST['rest'])) {
if (empty($_POST['email'])) {
echo "<h2 class='output'>You did not enter an email address</h2>";
}
else{
$email = $_POST['email'];
mysql_select_db($database_localhost,$localhost) or die ("Couldn't select the database.");
$result1=mysql_query("SELECT * FROM student WHERE email='$email'");
$result2=mysql_query("SELECT * FROM admin WHERE email='$email'");
$rowCheck1 = mysql_num_rows($result1);
$rowCheck2 = mysql_num_rows($result2);
if(($rowCheck1 > 0) || ($rowCheck2 > 0)){
$newPass = md5( random_gen(8));
mysql_query("INSERT INTO admin, student (password) VALUES (".$newPass.") WHERE email="$email"");
}}
非常感谢任何帮助 谢谢
答案 0 :(得分:1)
你应该使用sql update statement。 insert语句将向学生和管理表添加一个新行。
因此您的代码应该类似于:
if (isset($_POST['rest'])) {
if (empty($_POST['email'])) {
echo "<h2 class='output'>You did not enter an email address</h2>";
}
else{
$email = $_POST['email'];
mysql_select_db($database_localhost,$localhost) or die ("Couldn't select the database.");
$result1=mysql_query("SELECT * FROM student WHERE email='$email'");
$result2=mysql_query("SELECT * FROM admin WHERE email='$email'");
$rowCheck1 = mysql_num_rows($result1);
$rowCheck2 = mysql_num_rows($result2);
if(($rowCheck1 > 0) || ($rowCheck2 > 0)){
$newPass = md5( random_gen(8))
mysql_query("UPDATE admin SET password = '$newPass' WHERE email='$email'");
mysql_query("UPDATE student SET password = '$newPass' WHERE email='$email'");
}
}
}
答案 1 :(得分:-5)
不使用新行插入mysql表,而是使用“update”。
mysql_query("UPDATE `admin`,`student` (`password`) VALUES ('$newPass') WHERE `email` = '$email'");
另外,添加了一些标点符号。
编辑: 感谢@ zi42提醒我,使用MD5通常不是一个好主意。最好使用的是hash_hmac和“sha256”哈希。