Php 错误:选择来自电子邮件地址为“”的用户的电子邮件dhruv@gmail.com'在进行查询时获取此错误

Php 错误:选择来自电子邮件地址为“”的用户的电子邮件dhruv@gmail.com'在进行查询时获取此错误,php,mysql,input,Php,Mysql,Input,嘿,我正在做一份登记表,这是我的代码 if (isset($_POST['submit'])) { $GST = $_POST['GST']; $email = $_POST['email']; $contact = $_POST['contact']; $whatsapp = $_POST['whatsapp']; $adhaar = $_POST['adhaar']; $username = $_POST['username'];

嘿,我正在做一份登记表,这是我的代码

if (isset($_POST['submit'])) {
    $GST = $_POST['GST'];
    $email = $_POST['email'];
     $contact = $_POST['contact'];
  $whatsapp = $_POST['whatsapp'];
     $adhaar = $_POST['adhaar'];
     $username = $_POST['username'];
     $password = $_POST['password'];
     $pan = $_POST['pan'];
     $district = $_POST['district'];
// Define variables and initialize with empty values



$sql = "SELECT email FROM users WHERE email = '$email'";
$result = mysqli_query($con, $sql);

if (mysqli_num_rows($result) == 1) {
    echo "string";
}else{
    $sql2 = "INSERT INTO users (username, password,email,district,gst,watsapp,adhaar,contact,pan) VALUES ($username, $password,$email,$district,$GST,$whatsapp,$adhaar,$contact,$pan)";

    if (mysqli_query($con, $sql2)) {
   $customername = $_POST['product_name'];
   foreach ($customername as $key => $value) {//start ho rah hai
       $sql = "INSERT INTO center (id) VAlues ('$value')";
       if (mysqli_query($con, $sql)) {
    echo "string";
}
   }// khatam ho rha hai ye 
}else{
 echo "Error: " . $sql . "<br>" . mysqli_error($con);
}

}



}

   ?>

然后它显示没有错误,我无法理解发生了什么。

对于MySQL,字符串比较与其他代码不同。基本上,您不能使用=来做您认为它可以做的事情。当这种情况发生时,MySQL会用它做其他事情

请阅读MySQL中的字符串操作手册以获取更多帮助,但您希望使用关键字LIKE并在电子邮件地址上精确匹配,例如:

哪里有像“$email”这样的电子邮件

您可能需要使用找到的PHP MySQL转义字符串函数过滤@

注*

您的代码当前易受MySQL注入攻击。接受用户输入并直接输入数据库查询是非常危险的,是一种不好的做法


阅读更多关于如何防止它的内容。

为什么会这样?这是我刚才讨论的部分,您的开场白/段落:对于MySQL,字符串比较与其他代码不同。基本上,你不能用=去做你认为它能做的事这就是我的问题所在。他们当前的查询有效,其中email='$email';-那么,你能再解释一下吗?最重要的是,它不能回答/解决问题。你没有看过他们剩下的代码吗?请看我用以结束它的复制品。@FunkFortyNiner您的第二条评论比第一条评论说的要多得多。这是很讽刺的,因为你对我没有详细说明的回答投了反对票。进一步看,查询可能是正确的,问题可能在于未显示的代码,如初始化空值的注释。您非常容易受到SQL注入攻击,如果您尚未受到攻击,您将受到黑客攻击。使用参数化查询可完全避免此问题。所有查询中必须引用字符串文本变量,但不包括预处理语句方法。
$customername = $_POST['product_name'];
   foreach ($customername as $key => $value) {//start ho rah hai
       $sql = "INSERT INTO center (id) VAlues ('$value')";
       if (mysqli_query($con, $sql)) {
    echo "string";
}