【问题标题】:Error: SELECT email FROM users WHERE email = 'dhruv@gmail.com' getting this error while making a query [duplicate]错误:SELECT email FROM users WHERE email = 'dhruv@gmail.com' 在进行查询时收到此错误 [重复]
【发布时间】:2019-11-04 18:45:44
【问题描述】:

嘿,我正在填写注册表,这是我的代码

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);
}

}



}

   ?>

我收到此错误错误:SELECT email FROM users WHERE email = 'dhruv@gmail.com'

如果我不使用此代码

$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";
}

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

【问题讨论】:

  • 对 SQL 注入攻击持开放态度,如果您还没有受到攻击,您将被黑客入侵。使用参数化查询可以完全避免这个问题。
  • 字符串文字变量必须在所有查询中引用,但不包括准备好的语句方法。

标签: php mysql input


【解决方案1】:

使用 MySQL,字符串比较不像其他代码那样工作。基本上,您不能使用= 来做您认为的事情。当这种情况发生时,MySQL 会用它做其他事情。

阅读this MySQL 中的字符串操作手册以获得更多帮助,但您想使用关键字LIKE 并与电子邮件地址完全匹配,例如:

WHERE email LIKE '$email'"

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

注意*

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

阅读更多here 以了解如何预防。

【讨论】:

  • 为什么会这样?
  • 这是我说的部分,你的开场白/段落:“使用MySQL,字符串比较不像其他代码那样工作。基本上,你不能用=来做你想的事情确实如此。” - 这就是我遇到的问题。他们目前的查询是有效的,是WHERE email = '$email'"; - 那么,你能再解释一下吗?最重要的是,它没有回答/解决问题。你没有检查过他们其余的代码吗?看看我关闭它的副本。
  • @FunkFortyNiner 您的第二条评论比第一条要多得多。具有讽刺意味的是,因为(假设)您因未详细说明而对我的回答投了反对票。再看,查询可能是正确的,问题可能出在未显示的代码上,比如他们初始化空值的注释。
猜你喜欢
  • 2019-03-29
  • 2022-10-25
  • 2015-12-03
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 2020-05-17
  • 1970-01-01
  • 2022-12-23
相关资源
最近更新 更多