【发布时间】:2014-08-20 11:51:38
【问题描述】:
我有一个数据库表users。每个用户至少有一个用户 ID。另外两个可选值是email 和username(也必须包含字母,因此它永远不会与用户ID 混合!-我知道)。它们都是独一无二的。
我有一种方法可以从用户表中获取详细信息(行)。参数$userIdentifier 可以是用户名、电子邮件或用户名。
我想要的是查询适用于所有 3 种类型(主要是用户 ID)。
$user->getData(111203432);
$user->getData("myemail@admin.com");
$user->getData("Admin");
if email: *WHERE email=...*
if userid: *WHERE userid=...*
if username: *WHERE username=...*
现在我的查询不起作用(并且缺少对用户名的检查)。我尝试了各种方法,这是最新的:
if(is_numeric($userIdentifier)) {
// also tried if_int
$sql_getUserByValue = "users.userid";
$bindType = PDO::PARAM_INT;
} elseif(filter_var($userIdentifier, FILTER_VALIDATE_EMAIL)) {
$sql_getUserByValue = "users.email";
$bindType = PDO::PARAM_STR;
} else {
return false; // user not found
}
global $main_dbconnection;
$query = $main_dbconnection->prepare("SELECT * FROM users
..... some inner joins here because different user types in diff. tables ...
WHERE $sql_getUserByValue=:userIdentifier");
$query->bindParam(':userIdentifier', $userIdentifier, $bindType);
$query->execute();
// Fetch result if found >>>
也没有给出任何错误。仅找到 0 行(方法返回 false)。
有什么想法可以做到这一点吗?
【问题讨论】: