使用多维数组查询mysql


Consult mysql with multidimensional array

我尝试了所有想到的东西,但都不起作用。

我有一个像这个的阵列

$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的数组进行比较,哪种方式是最好的结果?

问候!

使用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;
}

现在CCD_ 1的结构将类似于CCD_ 2。

请注意,您的SQL命令包含一个*,这意味着您可以检索所有列。在我的示例中,只使用了sku列。