我有一张像下面这样的table。
id supplier_id item_id minimum_order_qty
1 6 1 500
2 4 1 300
3 2 2 200
4 3 2 100
5 4 3 250
6 5 5 100
7 7 6 1000
8 8 6 600
9 9 7 700
10 1 7 500
11 7 8 1000
12 9 9 700
13 2 10 500
14 9 10 600
每个 item_id
可以有多个供应商( supplier_id
).
我有两个数组 item_id
数组和 supplier_id
数组。 item_id
数组:
Array
(
[0] => 9
[1] => 10
[2] => 11
[3] => 12
[4] => 13
[5] => 14
[6] => 15
[7] => 16
[8] => 17
[9] => 18
[10] => 19
[11] => 20
[12] => 21
[13] => 22
[14] => 23
[15] => 24
)
``` `supplier_id` 数组:
Array
(
[0] => 9
[1] => 2
[2] => 5
[3] => 1
[4] => 1
[5] => 9
[6] => 6
[7] => 4
[8] => 6
[9] => 9
[10] => 1
[11] => 9
[12] => 9
[13] => 4
[14] => 5
[15] => 9
)
两个数组长度相同。我要选择 `minimum_order_qty` 从 `supplier_item` 基于这两个数组。通常,我必须选择这样的内部循环:
$item_count = count($item);
$sup_count = count($supp_id);
for($i=0; $i<$item_count; $i++) {
$itm_id = $item[$i];
$s_id = $supp_id[$i];
$sql = "select * from supplier_item where item_id=$itm_id and supplier_id=$s_id";
$result[] = $this->query($sql);
}
但是,上面的代码将多次运行查询。我不想这么做。那么,有没有其他方法可以通过单个查询选择数据呢?
2条答案
按热度按时间7bsow1i61#
您可以在一个查询中完成
hgtggwj02#
我们可以利用mysql的扩展
WHERE IN
语法,并使用以下形式的查询:php代码:
重要提示:原始字符串连接可能会为sql注入打开大门。如果在生产中使用此答案,则仅当您已经对item和supplier id数组进行了消毒,并且确定它们只包含整数时,才应使用此答案。