动态生成的查询

时间:2015-08-03 01:05:04

标签: php mysql sql

我正在使用mysql从数据库创建搜索功能,但是从设计其余程序的方式来看,用户只能从他们输入的信息中返回1个结果。这对我编程错误很好,但是我在接受多个字符串作为输入来从表中选择数据时遇到了麻烦?

如何让人们能够输入多个字段(名字,电话)等的组合,并提出与之匹配的结果而不会使空字段偏离结果?即(电话号码是空白的,所以只返回有空白电话号码的人)?

SELECT * FROM `users` WHERE `First_Name` = '$_SESSION[queryfname]

目前上面的查询是什么,我不确定使用什么功能(AND,OR)任何帮助将不胜感激。谢谢它提前。

2 个答案:

答案 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