如果电子邮件存在则返回错误,否则添加php mysql

时间:2013-11-28 22:44:49

标签: php mysql

我正在尝试编写执行以下操作的脚本。收取用户的电子邮件并将其添加到数据库中,但如果用户的电子邮件已存在,则拒绝。

<?
require_once('includes/db.php'); 

$email = mysqli_real_escape_string($link, $_POST['email']); 

$dupesql = "SELECT * FROM emails where (email = '$email')";
$duperaw = mysqli_query($link, $dupesql);


if(int mysql_num_rows($duperaw) > 0){
     echo 'Error already in there';
}
else {
$sql = "INSERT INTO emails(email)
    VALUES('$email')";
$result = mysqli_query($link, $sql); 

header('Location: poll/poll.php');
}


// close mysql
mysqli_close($link);
?>

5 个答案:

答案 0 :(得分:0)

试试这个

$mysqli->real_query('INSERT INTO '.$table.' ('.$cols.') VALUES ('.$vals.')');

答案 1 :(得分:0)

更改您的代码如下:

$dupesql = "SELECT * FROM emails where email = '$email'";
$duperaw = mysqli_query($link, $dupesql);


if(mysql_num_rows($duperaw)==1){
 echo 'Error already in there';
}

答案 2 :(得分:0)

您正在将mysqli_mysql_混合,这是此处的主要问题。

使用mysqli_num_rows代替mysql_num_rows

答案 3 :(得分:0)

你不应该混合使用mysqli()和mysql()。 并删除 int 错误转换。

//...
if(mysqli_num_rows($duperaw) > 0){
     echo 'Error already in there';
}
//...

答案 4 :(得分:0)

为什么不让mysql来处理呢?如果您希望email是唯一的,请为email定义唯一索引:

CREATE UNIQUE INDEX email_index ON emails (email)

现在您只需要在插入后检查是否有任何行受到影响:

if (mysqli_affected_rows()>0) {
  //success, email inserted
} else {
  // rejected
}

通过这种方式,您将不再调用数据库,并使代码更简单,imho。