我正在尝试所有我想到的但没有任何作用。
我有一个像这样的数组
$sku _list = Array(
[0] => Array
(
[sku] => 885370773958
)
[1] => Array
(
[sku] => 711719805205
))
使用下一个代码进行咨询
$db = new mysqli("localhost", "user", "pass", "db");
$consult_sku = $db->query("SELECT * FROM fullfilment WHERE sku IN (" . implode(",", array_map(function ($sku_entry) { return $sku_entry['sku'];},$sku_list)) . ")");
获取下一个数组,仅使用$ sku_list的第一个值
Array
(
[0] => 885370773958
[sku] => 885370773958
[1] => CAMO
[name] => CAMO
[2] => 1
[quantity] => 1
)
我想恢复一个类似于$ sku_list的数组进行比较,哪种方式最好得到结果?
问候!
答案 0 :(得分:1)
使用PHP代码并不羞耻,而且执行速度非常快。所以不要把这个怪物放在你的查询中:
array_map(function ($sku_entry) { return $sku_entry['sku'];},$sku_list)
您可以在查询前编写简单易懂的PHP代码:
foreach ($sku_list as $item) $sku[] = $item['sku'];
然后执行查询:
$sql = 'SELECT sku FROM fullfilment WHERE sku IN ('.implode(',',$sku).')';
$result_sku = $db->query($sql);
不要害怕多行,它使您的代码更易于阅读和理解。在此之后,您可以从结果中提取信息:
while($row = $result_sku->fetch_assoc()) {
$sku_found[] = $row;
}
现在$sku_found
的结构与$sku_list
类似。
请注意,您的SQL命令包含*
,这意味着您将检索所有列。在我的示例中,仅使用了sku
列。