我正在尝试对用户输入的电子邮件进行快速检查,如果电子邮件字段不唯一,则向用户提供错误。我已经设置了数据库以保持该字段的唯一性,现在它是为了告诉用户他们做错了什么。
如果我在没有电子邮件检查的情况下运行下面的脚本,我可以很好地将值插入到表中。如果是新电子邮件,所有消息均有效,并且表格会更新。
但是当我添加电子邮件检查代码时,它会识别出错误的条目并提供错误,但如果电子邮件正常,它将不会继续输入值。
<?php
require('connect.php');
// If the values are posted, insert them into the database.
if (isset($_POST['rname']) && isset($_POST['email'])){
$rname = $_POST['rname'];
$fname = $_POST['fname'];
$email = $_POST['email'];
$emailcheck = "select email from entries where email = ".$email."";
if (mysql_num_rows != 1)
{
$err = "Error email already registered!";
} else {
$query = "INSERT INTO `entries` (rname, fname, email) VALUES ('$rname', '$fname', '$email')";
$result = mysql_query($query);
if($result){
$msg = "Thanks, you have successfully registered.";
}
}
}
?>
故障代码在此部分
$emailcheck = "select email from entries where email = ".$email."";
if (mysql_num_rows != 1)
{
$err = "Error email already registered!";
} else {
最佳答案
您必须将查询中的字符串括在引号内,并且必须使用 mysql_query() 执行它。您的代码中缺少这两者。
$emailcheck = mysql_query("select email from entries where email = '$email'");
此外,您的代码中 mysql_num_rows()
的语法也是错误的。应该是:
int mysql_num_rows ( resource $result )
即,。
if (mysql_num_rows($emailcheck ) >0 ) // if email already exists
{
$err = "Error email already registered!";
}
关于php - 表单无需检查即可工作,但停止不会插入检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25800443/