TEL:400-8793-956
当前位置:程序、服务器

检查电子邮件是否存在或代码不起作用

提问者: 近期获赞: 浏览人数: 发布时间:2020-12-17 12:20:27

 问:我如何检查电子邮件是否存在,我有此代码,但无法正常工作

 
<?php
include "Config.php";
function mksafe($data){
     $data=trim($data);
     $data=strip_tags($data);
     $data=htmlspecialchars($data);
     $data=addslashes( $data);
     return $data;
 }
  $fname = mksafe($_POST["fname"]);
  $lname = mksafe($_POST["lname"]);
  $email = mksafe($_POST["email"]);
  $sql = "SELECT * FROM `users` WHERE `email`=$email";
$result = $conn->query($sql);
if($result->num_rows >= 1) {
    echo "Email  already exist.";
} else {
 $sql = "INSERT INTO users (fname, lname, email,reg_date)
    values(' $fname', '$lname',' $email',now())";
     if ($conn->query($sql) === TRUE){ 
        header("Refresh:0; url=index.php");
       } else { 
           echo "Error: " . $sql . "<br>" . $conn->error; 
           } 
 
}
 
 $conn->close();
 
答:因此,我看到您正在从表单中输入名字,姓氏和电子邮件地址。然后,您要对数据进行清理以准备将其用于MySQL语句。
 
但是,您的SQL语句需要这样加上引号$email:
 
$sql = "SELECT * FROM `users` WHERE `email` = '$email'";
然后,您正在使用该SQL语句查询数据库,如果存在一行,则说确实存在,如果没有,则看起来在单引号和变量之间有一些多余的空格,它们不应该。第18/19行应显示为:
 
$sql = "
    INSERT INTO `users` (fname, lname, email, reg_date)
    VALUES ('$fname', '$lname', '$email', NOW())
";
 
 
答:该代码有效,尽管我会警告您有关在SQL中包含变量的问题。准备好的声明会更安全。
顺便说一句,不知道您的其余代码是什么样子,我只能提供您检查对“ if”语句的输入是否符合您的期望。尝试在第13行之后转储sql语句,添加以下内容:
print_r($ sql); die();
上一篇: PHP + MySQL用户定义函数
下一篇: 问题呼叫功能?