使用PHP和MySQL创建动态搜索查询

and*_*ndy 6 php mysql sql search mysqli

我正在尝试根据用户输入创建动态搜索查询.

要求:

  • 用户可以填写无,部分或全部字段.
  • 查询在表中搜索匹配所有要求的记录.

现在我已经完成了我的研究,并且我发现了多种方法.但它们都不起作用,如果它们起作用,它们远非实用.

尝试:

目前我正在创建一个这样的查询:

SELECT * 
FROM assignments 
WHERE (id = $id OR id = '') 
  AND (field1 = $field1 OR field1 = '')
Run Code Online (Sandbox Code Playgroud)

此查询有效,但仅在您填写所有字段时才有效.

我从stackoverflow文章中得到了这个,我找不到了,说:

如果用户填写了输入字段,它将检查第一个规则"id = $ input",如果用户没有指定任何输入,它将检查"id =''",当它检查时,它将回报一切.因为它逃脱了空搜索规则.

但正如你可能已经知道的那样,它不起作用..

你怎么建议我接近这个?

小智 12

尝试获取所有post vars并循环遍历它们以查看它们是否有效,然后构建查询

<?php
$id = $_POST[id];
$field1 = $_POST[field1];
$field2 = $_POST[field2];
$field3 = $_POST[field3];

$whereArr = array();
if($id != "") $whereArr[] = "id = {$id}";
if($field1 != "") $whereArr[] = "field1 = {$field1}";
if($field2 != "") $whereArr[] = "field2 = {$field2}";
if($field3 != "") $whereArr[] = "field3 = {$field3}";

$whereStr = implode(" AND ", $whereArr);

$query = "Select * from assignments WHERE {$whereStr}";
Run Code Online (Sandbox Code Playgroud)

这样的事情应该能够满足您的需求