Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/MySQL-电子邮件验证不起作用_Php_Mysql_Pdo - Fatal编程技术网

PHP/MySQL-电子邮件验证不起作用

PHP/MySQL-电子邮件验证不起作用,php,mysql,pdo,Php,Mysql,Pdo,我知道这已经被问了很多,我已经搜索并尝试了所有。我真的很接近,但无法让它工作 我试图检查用户名或usermail是否已经在使用中,并相应地显示错误 <?php if (isset($_POST['register'])) { try { $checkValidity = $connect->prepare('SELECT username, usermail FROM users WHERE username = :username OR user

我知道这已经被问了很多,我已经搜索并尝试了所有。我真的很接近,但无法让它工作

我试图检查用户名或usermail是否已经在使用中,并相应地显示错误

<?php
if (isset($_POST['register'])) {

    try 
    {
        $checkValidity = $connect->prepare('SELECT username, usermail FROM users WHERE username = :username OR usermail = :usermail');
        $checkValidity->bindValue(':username', $username);
        $checkValidity->bindValue(':usermail', $usermail);
        $checkValidity->execute();
        $row = $checkValidity->fetchColumn();

        if ($row == $username) {
            $errName = 'This username is already taken.';
        } 
        if ($row == $usermail) {
            $errMail = 'Email already in use.';
        }
    }
    catch(PDOException $e)
    {
        // print $e->getMessage();
    }
}
?>

这对用户名很好,但对我来说,我无法让电子邮件错误正常工作

我尝试了单独的SELECT查询(username/usermail),只有在显示username错误时才会显示电子邮件错误

电子邮件错误永远不会自行显示

我花了太多的时间试图让它发挥作用,我正在慢慢失去理智

如果有任何迹象,我们将不胜感激


谢谢…

FetchColumn返回第一列值。您需要改用fetch。像

$row = $checkValidity->fetch();
if ($row['username'] == $username) {
    $errName = 'This username is already taken.';
} 
if ($row['usermail'] == $usermail) {
    $errMail = 'Email already in use.';
}

FetchColumn返回第一列值。您需要改用fetch。像

$row = $checkValidity->fetch();
if ($row['username'] == $username) {
    $errName = 'This username is already taken.';
} 
if ($row['usermail'] == $usermail) {
    $errMail = 'Email already in use.';
}
如果使用PDOStatement::fetchColumn()检索数据,则无法从同一行返回另一列

您只需要使用fetch()获取整行并进行如下比较

$row = $checkValidity->fetch();

 if ($row['username'] == $username)  {
    $errName = 'This username is already taken.';
} 
 if ($row['useremail'] == $useremail)  {
    $errMail = 'Email already in use.';
}
如果使用PDOStatement::fetchColumn()检索数据,则无法从同一行返回另一列

您只需要使用fetch()获取整行并进行如下比较

$row = $checkValidity->fetch();

 if ($row['username'] == $username)  {
    $errName = 'This username is already taken.';
} 
 if ($row['useremail'] == $useremail)  {
    $errMail = 'Email already in use.';
}

使用fetchRow if($row['username']=$username){}if($row['useremail']=$usermail){}我不经常使用PDO,但fetchColumn不是只检索第一列吗?在结果集中,第一列始终是username列?您需要在
username
partuse fetchRow if($row['username')之后再次调用
fetchColumn
==$username){}如果($row['useremail']==$usermail){}我不经常使用PDO,但是fetchColumn不只是检索第一列,它在您的结果集中始终是username列?您需要在
username
部分之后再次调用
fetchColumn
,非常感谢您。。。这确实奏效了!现在很有魅力。谢谢你,非常感谢你。。。这确实奏效了!现在很有魅力。谢谢,哈!我没有看到你编辑的消息!是的,这就是解决方案,它有效!谢谢你花时间帮忙。哈!我没有看到你编辑的消息!是的,这就是解决方案,它有效!谢谢你花时间帮忙。