在 php 上的同一搜索请求中搜索多个订单 ID

问题描述 投票:0回答:2

嗨,我想在我的网站上的同一个搜索请求中搜索多个订单 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;
php mysql search
2个回答
0
投票

您可以使用 IN 运算符代替 LIKE 运算符,例如

WHERE orders.order_id IN (100,101,102,103)

一些重要提示:

  • 您正在使用准备好的语句,这很好,但是您没有传递参数,而是使用字符串连接:不要那样做您暴露于 SQL 注入,而是在准备好的语句中使用参数。
  • 不要,我重复不要在查询字符串中传递SQL查询条件:它比之前的问题更糟糕
  • 您可以直接在查询中获取行数,而不是查询所有行并检索行数($count->rowCount())例如,您可以像这样包装查询:
$baseQuery = "SELECT field1, field2 FROM table";
$countQuery "SELECT count(*) FROM ($baseQuery) AS c";

然后执行 $countQuery(始终使用准备好的语句和参数)并立即获取计数


-1
投票

你可以试试这个代码:

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。最后,将所有搜索词添加到搜索查询和搜索链接中,以逗号分隔。

© www.soinside.com 2019 - 2024. All rights reserved.