2017-10-17 47 views
0

我有一个PHP的形式下面,而不管我在数据库中,或者一个新的电子邮件地址已输入电子邮件地址时,反应似乎不是我想要的。任何帮助表示感谢。PHP的MySQL如果记录存在

$eMailAddress = $_POST['eMailAddress']; 

$sql = sprintf("SELECT eMailAddress FROM Membership WHERE eMailAddress='$eMailAddress' LIMIT 1"); 

$result = mysqli_query($conn, $sql); 

if ($result) { 
    echo "Sorry your email is already in the system"; 
} else { 
    // proceed with inserting record into database 
} 

$row = mysql_fetch_row($result); 
+0

你为什么不把你的邮件列设置为唯一的? – madalinivascu

+0

这是固定到现有的表单。我们已经有几次与人填写相同的电子邮件地址的条目。所以我们现在无法将eMailAddress更改为唯一。 –

+0

您的混合mysqli_ *和mysql_ *功能,这是不可能的 –

回答

3

如果您不介意尝试此代码并让我知道。我已经使用mysqli_准备好的语句对其进行了编码,这使得SQL注入证明成为可能。您应该着眼于使用准备好的语句。

使用mysqli预处理语句

$sql = $conn -> prepare("SELECT eMailAddress FROM Membership WHERE eMailAddress=?"); 
$sql -> bind_param("s", $_POST['eMailAddress']); 
$sql -> execute(); 
$rowCounts = $sql -> num_rows(); 

if ($rowCounts > 0){ 
     echo "Sorry your email is already in the system"; 
    }else{ 
     // proceed with inserting record into database 
    } 

$row = $sql -> fetch_assoc(); 

使用PDO预处理语句

$sql = $conn -> prepared("SELECT eMailAddress FROM Membership WHERE eMailAddress=:email"); 
$sql -> bindParam(':email', $_POST['eMailAddress'], PDO:: PARAM_STR); 
$sql -> execute(); 
$rowCounts = $sql -> rowCount(); 

if ($rowCounts > 0){ 
    echo "Sorry your email is already in the system"; 
}else{ 
    // proceed with inserting record into database 
} 

$row = $sql -> fetch(PDO::FETCH_ASSOC); 
+0

尝试过,但它仍然给了我它说:“与插入记录到数据库中进行”的结果。提供有关php表单的更多信息。它基于WordPress作为模板。不知道WordPress是否会停止一些涉及到sql语句的php函数? –

+0

这意味着代码的'SQL'部分不查询表。 – Sand

+0

不要只复制和粘贴代码,了解代码在做什么。 –

0

我重写它遵循它的工作现在。

$sql="SELECT eMailAddress FROM Membership WHERE eMailAddress='$eMailAddress'"; 



if ($result=mysqli_query($conn,$sql)) 
{ 
    // Return the number of rows in result set 
    $rowcount=mysqli_num_rows($result); 

    if ($rowcount > 0) { 

    echo "Your email address is already in our database. Please try again."; 

    } else { 

    // proceed with inserting new row 

    } 

} 
    mysqli_free_result($result); 
相关问题