服务器端php电子邮件验证不起作用

服务器端php电子邮件验证不起作用,php,Php,我正在练习PHP,我创建了一个注册表单,它执行客户端验证和服务器端验证。Javascript可以完美地工作并执行客户端,但我删除了所有Javascript以查看服务器端是否工作,但它不工作,并且它提交表单时没有显示我的错误 以下是服务器端代码: if($_POST) { $query = "SELECT `email` FROM `users` where email =" . "'" . $_POST['Email'] . "'"; $result = mysqli_que

我正在练习PHP,我创建了一个注册表单,它执行客户端验证和服务器端验证。Javascript可以完美地工作并执行客户端,但我删除了所有Javascript以查看服务器端是否工作,但它不工作,并且它提交表单时没有显示我的错误

以下是服务器端代码:

if($_POST)
{

    $query = "SELECT `email` FROM `users` where email =" . "'" . $_POST['Email'] . "'";

    $result = mysqli_query($db,$query);

    $row = mysqli_fetch_array($result);

    if($_POST['Email'] == $row['email'])
    {

        $error .= "This Email address is already registered with us";

    }

    if($error != "")
    {

        $error = '<div class="alert alert-danger" role="alert"><p>There were error(s) in your form:</p>' . $error . '</div>';

    }
}
if($\u POST)
{
$query=“从`users`中选择`email`,其中email=“.”””$\u POST['email'].“”;
$result=mysqli_查询($db$query);
$row=mysqli\u fetch\u数组($result);
如果($_POST['Email']==$row['Email']))
{
$error.=“此电子邮件地址已向我们注册”;
}
如果($error!=“”)
{
$error='您的表单中有个错误:

。$error'; } }
以下是表格代码:

<form method="post">
                <div class="form-group">
                    <label for="Email">Email address</label>
                    <input type="email" class="form-control" id="Email" name="Email" aria-describedby="emailHelp">
                    <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
                </div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>

电子邮件地址
我们永远不会与其他人共享您的电子邮件。
提交

执行SELECT查询将始终生成一个数组,因此$row是一个数组,必须像这样检查电子邮件

if($\u POST['Email']==$row['Email']))
记录变量$row将提供更多信息

还有其他检查查询是否找到内容的方法,请查看:
如果($\u POST['Email']==$row)
-$row是一个数组,那么将其与输入值进行比较就没有什么意义了-如果有任何区别,则需要是
$row['Email']
。但是这种比较在开始时没有什么意义——您已经在查询的WHERE子句中要求这样做了。做两次相同的比较没有意义。您应该在此处检查返回的行数。
$error!==空
请。否则将传递空字符串、零、false..$error!==null已尝试此操作仍然不起作用尝试var_dump($row);看看它的内容,当我提交一个空表单时,var_dump($row)显然是空的!但如果我输入已经在数据库var_dump中的电子邮件,它将返回电子邮件!我也有代码,检查电子邮件字段是否为空,这在我提交空表单时也不起作用!如果$row['email']返回数据库中的电子邮件,那么什么不起作用?为了检查数据库中是否已经有一个条目,我建议使用if(mysqli_num_rows($result)>0),但顶部的检查应该有效。在mysql查询中使用时,$_POST['Email']work实际上是在获取数据,但在检查返回的DB数据时返回false,这一点我不理解。