检查数据库php中是否已存在值

时间:2015-11-27 10:51:36

标签: php mysql email mysqli newsletter

如果我的数据库中已存在电子邮件,则需要输入错误。

我已经制作了这段代码,但它不起作用

`<?php`

// CONNECT TO DATABASE

$mysqli = new mysqli("database", "username", "password","database_name"); // creates 

$mail = $_POST['mail']; //from input
$result = mysql_query("SELECT * FROM Newsmail WHERE mail='" . $mail . "'");
if (mysql_num_rows($result) == 1)
{
echo "Error";
}


else {
//sql
$sql = "INSERT INTO `database_name`.`Newsmail` (`newsmail_id`, `mail`) VALUES (NULL, \'" . $_GET['mail'] . "\');";

//INSERT TO DATABASE
$insert =  $mysqli->query($sql);

}

?>

2 个答案:

答案 0 :(得分:0)

如果电子邮件是unique key,请尝试INSERT IGNORE

$mail = mysql_real_escape_string($mail);
$sql="INSERT IGNORE INTO Newsmail (email) VALUES ('$email')";
mysql_query($sql) or trigger_error(mysql_error()." ".$sql);

if (mysql_affected_rows()) {
echo 'registration successfully';
} else {
echo 'already exists';
}

答案 1 :(得分:0)

代码中出现错误

  

1)您正在将mysql和mysqli混合到您的代码中

     

2)您的查询是为sql注入打开的

     

3)你的代码中的$ _POST和$ _GET方法混淆了

     

4)没有错误检查方法找出错误

<?php

// CONNECT TO DATABASE

$mysqli = new mysqli("database", "username", "password", "database_name"); // creates 

$mail = $mysqli->real_escape_string($_POST['mail']);
$result = $mysqli->query("SELECT * FROM Newsmail WHERE mail='" . $mail . "'");
if ($mysqli->num_rows($result) == 1) {
    echo "Error";
} else {
//sql
    $sql = "INSERT INTO `database_name`.`Newsmail` (`newsmail_id`, `mail`) VALUES (NULL, '" . $mail . "')";

//INSERT TO DATABASE
    $insert = $mysqli->query($sql);
}
?>