如果我的数据库中已存在电子邮件,则需要输入错误。
我已经制作了这段代码,但它不起作用
`<?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);
}
?>
答案 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);
}
?>