php
  • mysqli
  • 2017-08-06 19 views 0 likes 
    0
    $check=mysqli_query("select * from signup where email='$email"); 
    
        $rs = mysqli_num_rows($check); 
    
        if ($rs == 0) { 
         echo "exist"; 
        } 
        else{ 
         $sql = "INSERT INTO signup (username, email, password) 
         VALUES ('$name', '$email', '$password')"; 
         if ($conn->query($sql) === TRUE) { 
         echo "New record created successfully"; 
        } 
    } 
    

    回答

    0

    首先,請爲所有事情的熱愛學習SQL注入並逃避您的論點。

    mysqli::real_escape_string

    $email = $conn->real_escape_string($email); 
    

    其次,你用老的方式使用混合PDO,選擇一個,並堅持下去,這裏是使用純PDO代碼:

    $rs = $conn->query("select * from signup where email='$email'"); 
    if ($rs->num_rows == 0) 
    { 
        $sql = "INSERT INTO signup (username, email, password) 
          VALUES ('$name', '$email', '$password')"; 
        if ($conn->query($sql) === TRUE) { 
        echo "New record created successfully"; 
        } 
    } 
    

    第三,你可以在一個查詢中執行此操作:

    INSERT INTO signup (username, email, password) VALUES ('$name', '$email', '$password') ON DUPLICATE KEY UPDATE username = VALUES(username); 
    

    請勿使用ON DUPLICATE KEY IGNORE,因爲它隱藏了插入過程中可能發生的其他錯誤。對於這個工作,你需要在用戶名列的唯一關鍵contraint:

    ALTER TABLE signup ADD UNIQUE INDEX (username); 
    

    最後,在你的代碼中的錯誤$email之後是由於缺少結束報價,查詢失敗,你是假設你有結果。相反,你會得到一個錯誤(boolean false)。

    相關問題