嗨,我想在我的网站上的同一个搜索请求中搜索多个订单 ID,现在我的网站只有 1 个 ID 搜索并获得 100 或 101 之类的选项,但我需要使用 100,101,102,103 之类的逗号搜索 miltiple id 搜索并获取所有这些 ID我怎么能在这里分享我的代码请帮助我
elseif( $_GET["search_type"] == "order_id" && $_GET["search"] ):
$search_where = $_GET["search_type"];
$search_word = urldecode($_GET["search"]);
$count = $conn->prepare("SELECT * FROM orders INNER JOIN clients ON clients.client_id = orders.client_id WHERE orders.order_id LIKE '%".$search_word."%' && orders.dripfeed='1' && orders.subscriptions_type='1' ");
$count -> execute(array());
$count = $count->rowCount();
$search = "WHERE orders.order_id LIKE '%".$search_word."%' && orders.dripfeed='1' && orders.subscriptions_type='1' ";
$search_link = "?search=".$search_word."&search_type=".$search_where;
您可以使用 IN 运算符代替 LIKE 运算符,例如
WHERE orders.order_id IN (100,101,102,103)
一些重要提示:
$baseQuery = "SELECT field1, field2 FROM table";
$countQuery "SELECT count(*) FROM ($baseQuery) AS c";
然后执行 $countQuery(始终使用准备好的语句和参数)并立即获取计数
你可以试试这个代码:
elseif ($_GET["search_type"] == "order_id" && $_GET["search"]) {
$search_where = $_GET["search_type"];
$search_words = explode(',', urldecode($_GET["search"])); // split search query by comma
$search_query = array();
foreach ($search_words as $word) {
$word = trim($word);
if ($word != '') {
$search_query[] = "orders.order_id LIKE '%$word%'";
}
}
$search_query = implode(' OR ', $search_query);
$count = $conn->prepare("SELECT * FROM orders INNER JOIN clients ON clients.client_id = orders.client_id WHERE ($search_query) && orders.dripfeed='1' && orders.subscriptions_type='1'");
$count->execute(array());
$count = $count->rowCount();
$search = "WHERE ($search_query) && orders.dripfeed='1' && orders.subscriptions_type='1'";
$search_link = "?search=".implode(',', $search_words)."&search_type=".$search_where;
}
您可以检查代码,首先使用 explode() 方法将搜索查询拆分为多个用逗号分隔的术语,然后循环遍历每个术语以使用 LIKE 运算符和 OR 逻辑运算符构建搜索查询。然后使用生成的查询查找数据库的匹配订单 ID。最后,将所有搜索词添加到搜索查询和搜索链接中,以逗号分隔。