0

我正在尝试创建一个函数来使用特定条件搜索我的数据库。

function searchOrders($keywords, $criteriaId, $dateEntered, $statusID)

那是我打算使用的功能,我想构建一个查询来搜索每个变量,但也将它们组合起来。我想知道最好的方法是什么?

例如,他们不输入关键字但确实输入了criteriaId,或者他们同时输入了它们但省略了日期和状态。

任何想法都会受到赞赏,因为我还没有构建搜索功能。

4

4 回答 4

0

这很简单。只需从查询字符串中获取您的请求变量。如果它们不存在,请将它们设置为 "" 或 NULL....

$keywords = $_GET["keywords"];
$criteriaId = $_GET["criteriaId"];
$dateEntered = $_GET["dateEntered"];
$statusID = $_GET["statusID"];

...并调用函数:

$orders = searchOrders($keywords, $criteriaId, $dateEntered, $statusID);

在 searchOrders 函数中,您可以检查任何参数的值是否为“”(空白)或 NULL 并相应地创建您的 SQL 查询。

编辑:

这里的诀窍是使用where和关键字。(假设您只需要一个 where / 和条件查询,并且如果它的值不是空白或 NULL 则包含一个参数

public function searchOrders($keywords, $criteriaId, $dateEntered, $statusID)
{   
    $query = "select * from orders";
    $condition = " where ";

    if (!is_null($keywords)) {
        $query .= $condition . "keywords like '$keywords'";
        $condition = " and ";
    }

    if (!is_null($criteriaId)) {
        $query .= $condition . "criteriaId = $criteriaId";
        $condition = " and ";
    }

    if (!is_null($dateEntered)) {
        $query .= $condition . "dateEntered <= #$dateEntered#";
        $condition = " and ";
    }

    if (!is_null($statusID)) {
        $query .= $condition . "statusID = $statusID";
    }

    return mysql_query($query) or die (mysql_error);
}

希望这可以帮助!

维韦克

于 2013-03-31T07:51:11.790 回答
0

例如,使用简单的 mysql,您可以像这样构建一些:

调用一个函数来获取一些数据

$data = selectSome("ID_User = '". $iduser ."' AND Situation != 0", 'table_example', 'Id_User, Name, Description, null, 'ID_User DESC', null);

/*Process $data */

功能

public function selectSome($SQL, $table = null, $fields = "*", $group = null, $order = null, $limit = null)
{       
    if (!is_null($group)) {
        $SQL .= " GROUP BY ". $group;
    }

    if (is_null($order)) { 
        $SQL .= "";     
    } elseif ($order === "DESC") {
        $SQL .= " ORDER BY $this->primaryKey DESC";
    } elseif (!is_null($order)) {  
        $SQL .= " ORDER BY ". $order;
    } elseif ($order === "") { 
        $SQL .= " ORDER BY $this->primaryKey";
    }

    if ($limit) {
        $SQL .= " LIMIT ". $limit;
    }

    $query = "SELECT $fields FROM $table WHERE $SQL";

    return mysql_query($query) or die (mysql_error);
}

这是一个基本示例,可以更改一些值并获得您想要的功能并将MYSQL更改为PDO或MYSQLI。

于 2013-03-31T07:58:34.863 回答
0

尝试这样的事情我不太了解,但这是我找到它的地方

选择名称、价格、warranty_available、exclusive_offer FROM Products UNION ALL SELECT name、price、warranty_available、exclusive_offer FROM Services

联合查询

于 2013-03-31T08:17:20.060 回答
-1

尝试像我的东西:

$sql = mysql_query("select * from colleges where Campus_Name like '%$term%' or Campus_Address like '%$term%' or 
    Campus_State like '%$term%' or Campus_City like '%$term%' or Campus_Zip like '%$term%' ");
于 2013-03-31T07:49:10.580 回答