Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查用户的电子邮件地址是否与数据库中的任何现有电子邮件地址匹配_Php_Mysql_Mysqli_Forgot Password - Fatal编程技术网

Php 检查用户的电子邮件地址是否与数据库中的任何现有电子邮件地址匹配

Php 检查用户的电子邮件地址是否与数据库中的任何现有电子邮件地址匹配,php,mysql,mysqli,forgot-password,Php,Mysql,Mysqli,Forgot Password,我有一个表单,要求用户输入他们的电子邮件地址,以便接收密码重置电子邮件。我试图在发送电子邮件之前将电子邮件与数据库中现有的电子邮件进行比较;如果电子邮件不存在,则脚本不应发送重置电子邮件。我已经阅读了发布的问题/回复,用谷歌搜索了好几个小时,还修改了代码以删除空白或调整语法,但没有任何东西能让我摆脱这条1064错误消息…“我放弃了…” 我得到的错误是: 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“@rocketmail.com”附近使用的正确语法 SQL:从客户电子

我有一个表单,要求用户输入他们的电子邮件地址,以便接收密码重置电子邮件。我试图在发送电子邮件之前将电子邮件与数据库中现有的电子邮件进行比较;如果电子邮件不存在,则脚本不应发送重置电子邮件。我已经阅读了发布的问题/回复,用谷歌搜索了好几个小时,还修改了代码以删除空白或调整语法,但没有任何东西能让我摆脱这条1064错误消息…“我放弃了…”

我得到的错误是: 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“@rocketmail.com”附近使用的正确语法 SQL:从客户电子邮件=user@rocketmail.com


必须将字符串值括在引号中,否则肯定会出现语法错误。你的PHP语法是好的,MySQL不是

$sql = "SELECT customer_id FROM customer WHERE customer_email = '".mysqli_real_escape_string($db,$_POST['email'])."'";
稍后在代码中还有mysql_num_行,应该是mysqli_num_行,如下所示

$num_rows = mysqli_num_rows($result);
试试这个:

         $email = $_POST['email'];
         $sql = "SELECT customer_id FROM customer WHERE customer_email = '".mysqli_real_escape_string($db,$email )."'";
   $result = mysqli_query($db, $sql) or die(mysqli_error($db)."<br />SQL: $sql");

   while($row = mysqli_fetch_array($result)){

        if(!$row['customer_email']){
         echo '<p class="errorctr">Email was not found in our database.</p>';
               }

      }
说到你真正需要尝试的是:


此外,您的代码易受sql注入攻击,请使用myqli prepare或PDO使用参数化查询。根据该手册页,该参数的描述只是过程性的:mysqli_connect或mysqli_init返回的链接标识符我永远不会理解PHP用户为什么如此倾向于行数。顺便说一句,这样的昵称寻址自由仍然触发了通知。这是一件有趣的事情,谢谢你。可能是以后的编辑though@Wil在解释你的常识想说的话时可能存在误解。他是一个受人尊敬的社会成员,相信我,如果你继续积极参与这个论坛,你会从他身上学到很多东西。虽然我没有人对此发表评论,但如果我是你,我就不会让这场争论继续下去。有人可能不同意,但我认为没有理由继续这一论点。干杯,冷静下来。我认为这不是针对你个人的。但是,尽管他能提供所有的好处,他的专横却令人反感和沮丧。我在我的帖子中比很多帖子都要努力,但我值得投反对票,因为在发布前几个小时我搜索和阅读stackoverflow的搜索结果时,他之前关于这个问题的答案没有出现在他的搜索结果中。那是我的错?
         $email = $_POST['email'];
         $sql = "SELECT customer_id FROM customer WHERE customer_email = '".mysqli_real_escape_string($db,$email )."'";
   $result = mysqli_query($db, $sql) or die(mysqli_error($db)."<br />SQL: $sql");

   while($row = mysqli_fetch_array($result)){

        if(!$row['customer_email']){
         echo '<p class="errorctr">Email was not found in our database.</p>';
               }

      }
$sql = "SELECT customer_id FROM customer WHERE customer_email = ?";
$stm = $pdo->prepare($sql);
$stm->execute(array($_POST['email']));
$id  = $stm->fetchColumn();
if(!$id) {
    ...