我正在使用mysql从数据库创建搜索功能,但是从设计其余程序的方式来看,用户只能从他们输入的信息中返回1个结果。这对我编程错误很好,但是我在接受多个字符串作为输入来从表中选择数据时遇到了麻烦?
如何让人们能够输入多个字段(名字,电话)等的组合,并提出与之匹配的结果而不会使空字段偏离结果?即(电话号码是空白的,所以只返回有空白电话号码的人)?
SELECT * FROM `users` WHERE `First_Name` = '$_SESSION[queryfname]
目前上面的查询是什么,我不确定使用什么功能(AND,OR)任何帮助将不胜感激。谢谢它提前。
答案 0 :(得分:0)
您可以尝试限制:
SELECT * FROM `users` WHERE `First_Name` = '$_SESSION[queryfname] LIMIT 1;
答案 1 :(得分:0)
通常这是您在编程语言中处理的东西(这里似乎是PHP),并且只查询您提供的字段。你可以这样做:
$wheres = array('1=1');
if($_SESSION['queryfname']){
$wheres[] = "`First_Name` = '{$_SESSION['queryfname']}'";
}
if($_SESSION['querypnumber']){
$wheres[] = "`Phone_Number` = '{$_SESSION['querypnumber']}'";
}
$sql = "
SELECT *
FROM `users`
WHERE " . implode($wheres,' AND ');
但是,如果您只能在SQL中执行此操作,则可以执行类似这样的操作
SELECT
*
FROM `users`
WHERE
(
`First_Name` = '{$_SESSION['queryfname']}'
AND
`First_Name != ''
)
OR --Could also be AND
(
`Phone_Number` = '{$_SESSION['querypnumber']}'
AND
`Phone_Number` != ''
)
LIMIT 1