PHP/MySQL-电子邮件验证不起作用
我知道这已经被问了很多,我已经搜索并尝试了所有。我真的很接近,但无法让它工作 我试图检查用户名或usermail是否已经在使用中,并相应地显示错误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
<?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
,非常感谢您。。。这确实奏效了!现在很有魅力。谢谢你,非常感谢你。。。这确实奏效了!现在很有魅力。谢谢,哈!我没有看到你编辑的消息!是的,这就是解决方案,它有效!谢谢你花时间帮忙。哈!我没有看到你编辑的消息!是的,这就是解决方案,它有效!谢谢你花时间帮忙。