0

是否可以将表单数据发布到 SELECT 查询中,以便查询可以根据输入的内容找到结果?

例如,我有三个字段:
营销协议编号:_ __ _ __
公司 ID:_ __ _ __ _ _
开始日期:_ __ _ __ _ _

假设我不知道营销协议编号是什么,我想通过公司 ID 而不是营销协议编号来查找。或者,如果我只是想查找在特定日期(或日期范围)开始的促销活动,我只需输入开始日期而不在其他两个日期中输入任何内容。

目前我的查询是这样的:

$query = sprintf("SELECT * FROM Items, Promotions, Vendor_Prices, Vendors, Sales_Accounts
WHERE Items.itemid = Promotions.itemid AND
Vendors.vendorid = Promotions.vendorid AND
Vendor_Prices.vendorid = Vendors.vendorid AND
Vendor_Prices.itemid = Items.itemid AND
promoid = '$man'");

其中 $man 是营销协议编号的发布信息。抱歉,如果这有点令人困惑,我可以在必要时澄清一下。


编辑:
我想通了。我只是将 WHERE 字段中的查询更改为具有 OR 和 LIKE 而不仅仅是“=”。

promoid LIKE '$man' OR Vendors.vendorid LIKE '$cid' OR startdate = '$pstart'
4

1 回答 1

0

我可能误解了你的问题。如果您想根据一个人在表单中输入的信息以及他们没有输入的信息来运行查询,您可以使用一些 if 逻辑。

if ($_POST["man"] != "") {
    $query += sprintf(" AND promoId = '$man'", $_POST["man"]);
}
if ($_POST["companyId"] != "") {
    $query += sprintf(" AND companyId = '$companyId'", $_POST["companyId"]);
}
if ($_POST["startDate"] != "") {
    $query += sprintf(" AND startDate= '$startDate'", $_POST["startDate"]);
}
于 2013-10-25T23:12:58.523 回答