php - 表单无需检查即可工作,但停止不会插入检查

标签 php mysql forms

我正在尝试对用户输入的电子邮件进行快速检查,如果电子邮件字段不唯一,则向用户提供错误。我已经设置了数据库以保持该字段的唯一性,现在它是为了告诉用户他们做错了什么。

如果我在没有电子邮件检查的情况下运行下面的脚本,我可以很好地将值插入到表中。如果是新电子邮件,所有消息均有效,并且表格会更新。

但是当我添加电子邮件检查代码时,它会识别出错误的条目并提供错误,但如果电子邮件正常,它将不会继续输入值。

<?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/

相关文章:

php - 在 Laravel 中如何在查询中不带参数的 groupBy Url

php - php md5 中的简单登录表单?

javascript - 将变量从一个 HTML 页面传递到另一个 PHP 页面

php - 通过索引访问 PHP 字符串数组

php - 导航栏下拉菜单不出现

php - 计算我的 mysql 表中一行的更新次数

mysql - 在 mysql IF 语句中使用局部变量

php - 将图像文件作为 BLOB (PHP) 写入数据库

php - 使用单选按钮作为复选框

javascript - 让 jQuery 动态字段独一无二