gpt4 book ai didi

php - 我认为 MySQL 查询错误

转载 作者:行者123 更新时间:2023-11-29 08:12:44 24 4
gpt4 key购买 nike

好的,我有以下代码。在某种程度上,它应该有效。它首先检查电子邮件是否在数据库中,如果找到,它会将密码重置为 1000 到 9999 之间的随机值,然后通过电子邮件发送。 sendMail 是一个自定义函数,并且以其他形式工作,因此它不是这里的错误代码块。我不确定一些事情,我认为这些事情可能会导致以下 PHP 错误:

<?php 
define('INCLUDE_CHECK',true);

require 'connect.php';
require 'functions.php';
// Allowing MySQL Connection - Include_Check has to be TRUE

$email=$_POST['email'];
$email=mysql_real_escape_string($email);
$status = "OK";
$msg="";
if (!stristr($email,"@") OR !stristr($email,".")) {
$msg="Invalid E-Mail:<br>This address format is invalid!";
$status= "NOTOK";}

if($status=="OK") { // If e-mail is valid, status stays the same: query time!
$query="SELECT email,usr FROM tz_members WHERE email = '$email'";
$st=mysql_query($query);
$recs=mysql_num_rows($st);
$row=mysql_fetch_object($st);
$em=$row->email;// Switching $email to $em for the query.
if ($recs == 0) { // $recs is 0, that means that address doesn't exist. Tell the guy to register ? Yes plz.
// Display the message
echo "We're sorry: We could not find your address in the database.<br>Click here to create an account!<br> <a href='register.html'>Register </a></center>";
exit; }

$pass = rand(1000,9999);
// Using the functions.php public: sendMail
send_mail( 'administrator@cod5showtime.url.ph',
$_POST['email'],
'Username: '.$row->usr,
'Password: '.$pass);
mysql_query("UPDATE tz_members SET $row->pass = md5($pass)");
}
?>

差点忘了,这是 HTML 表单。

<form action="forgot.html" method="post">
<p><b>Email Address:</b> <input type="text" name="email" size="20" maxlength="40" value="<?php if (isset($_POST['email'])) echo $_POST['email']; ?>" /></p>
<input type="submit" name="submit" value="Reset" /></div>
</form>

让我描述一下我的问题:电子邮件已发送,带有 $pass,但电子邮件中的用户名(请参阅代码了解我指的是什么)是这样的:用户名(5),这让我觉得它没有选择好的用户名(MySQL 中的列名称是“usr”)。

最后,更新查询也一定是错误的,因为 MySQL 中的密码没有更新!

mysql_query("UPDATE tz_members SET $row->pass = md5($pass)");

这是更新查询,我不确定为什么它不起作用。

$query="SELECT email,usr FROM tz_members WHERE email = '$email'";

这是应该选择数据库中找到的 usr 和电子邮件的查询。

最佳答案

$row->pass 是您从数据库检索到的上一个 pass,它将是一个简单的 md5 哈希值。换句话说,您正在生成

... SET acbd18db4cc2f85cedef654fccc4a4d8 = md5(1234);

不知道你怎么想,但如果我有一个使用这样的字段名称的数据库表,我就必须找到模式设计者并将他们折磨致死。

你想要

... SET pass=md5($pass)
^^^^---your table's password field

相反。

关于php - 我认为 MySQL 查询错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21266567/

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