我正在尝试检查数据库中是否存在用户名或电子邮件,并将数据返回给用户,说明电子邮件或用户名是否已在使用中,有任何方法可以执行此操作而无需与数据库? 现在我有这个↓但是我不确定它是对的。
<?php
if (isset($_POST['sub'])){
require_once 'conexio.php';
$pdo = new Conexio();
$pdo->exec("set names utf8");
$dbTabla="usuaris";
$contra = $_POST["contra"];
$consulta=$pdo->prepare("SELECT username,email FROM $dbTabla WHERE username=? OR email=?");
$consulta->execute(array($_POST['username'],$_POST['email']));
$result = $consulta->fetchObject();
if($consulta->rowCount()>0){
if("what to put in here?"){
echo "That username it's already in use";
}
if("what to put in here?"){
echo "That e-mail it's already in use";
}
}
}
?>
由于
答案 0 :(得分:2)
您当前查询的“问题”(以及Chinnu建议的解决方案)是它可能最多返回两行(一个匹配用户名,另一个匹配电子邮件),您可能必须迭代,这可能是有点烦人。
您可以使用BIT_OR
聚合函数获得单行结果:
$consulta=$pdo->prepare("SELECT BIT_OR(username = ?) AS username_exists, " .
"BIT_OR(email = ?) AS email_exists " .
"FROM $dbTabla " .
"WHERE username=? OR email=?");
$consulta->execute(array($_POST['username'], $_POST['email'],$_POST['username'], $_POST['email']));
现在,您有一行可以轻松评估的真/假表达式:
if($result->username_exists) {
echo "That username is already in use";
}
if($result->email_exists) {
echo "That e-mail is already in use";
}
答案 1 :(得分:0)
你能试试吗,
$result = $consulta->fetchObject();
if($result->username==$_POST['username']){
echo "That username it's already in use";
}
if($result->email==$_POST['email']){
echo "That e-mail it's already in use";
}