对于我的注册系统,当用户注册时,我想确保他们的用户名、电子邮件等不被占用。我有代码来检查用户名是否存在,并且我可能可以对其他内容执行相同的操作。
如何在不多次重写 block 的情况下做到这一点?
tl;dr:如何以紧凑的方式检查数据库中的更多内容?
$userquery = "SELECT * FROM users WHERE username = '$username'";
if ($result = $mysqli->query($userquery)) {
if ($result->num_rows > 0) {
die ("Username Already Exists.");
}
}
最佳答案
在 where 子句中使用“OR”条件
$userquery = "SELECT * FROM users WHERE username = '$username' OR email= '$email'";
if ($result = $mysqli->query($userquery)) {
if ($result->num_rows > 0) {
die ("Username/Email Already Exists.");
}
}
编辑
那么,
function doesitexist($mysqli,$table,$field,$value) {
$userquery = "SELECT * FROM $table WHERE $field = '$value' LIMIT 1";
if ($result = $mysqli->query($userquery)) {
if ($result->num_rows > 0) {
return true;
} else {
return false;
}
} else {
return('Error running Query');
}
}
另一个编辑只是为了好玩。这应该在一次调用中检查一组字段和值。
$check = doesitexist($mysqli,'users',array('username'=>'bob','email'=>'someone@example.com'));
function doesitexist($mysqli,$table,$tocheck = array()) {
if (count($tocheck)>0) {
$where = '';
foreach ($tocheck as $field=>$value) {
$where .= $field." = '".addslashes($value)."' OR ";
}
$where = trim($where," OR ");
$userquery = "SELECT * FROM $table WHERE $where LIMIT 1";
if ($result = $mysqli->query($userquery)) {
if ($result->num_rows > 0) {
return true;
} else {
return false;
}
} else {
return('Error running Query');
}
} else {
return("No Fields/Values to check");
}
}
关于php - 检查数据库中的大量信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30396304/