gpt4 book ai didi

php - 如何对数组运行 foreach 并将其包含在 SQL 查询中?

转载 作者:可可西里 更新时间:2023-11-01 07:55:59 25 4
gpt4 key购买 nike

所以我希望能够从数组中获取一个值并在 SQL 查询中使用它,并从这些行中获取信息。我当前的代码是这样的:

$config['exclude_devices'] = array('1','5');

$exclude = $config['exclude_devices'];
foreach ($exclude as $excluded) {
$deviceinformation = mysqli_query($db, "SELECT * FROM `devices` WHERE `device_id` NOT IN(" . $excluded . ")");
}
while ($row = mysqli_fetch_assoc($deviceinformation)) {
// do stuff here
// write to a variable for use in a table
}

但是,这给出了设备 1、2、3、4 的输出。

如果我移动 foreach 以包含 while,它会生成 2,3,4,5,1,2,3,4:

$exclude = $config['exclude_devices'];
foreach ($exclude as $excluded) {
$deviceinformation = mysqli_query($db, "SELECT * FROM `devices` WHERE `device_id` NOT IN(" . $excluded . ")");
while ($row = mysqli_fetch_assoc($deviceinformation)) {
// do stuff here
}
}

如何修改此代码以仅生成配置中未列出的设备?

最佳答案

在示例 1 中:

你跑:

SELECT * FROM `devices` WHERE `device_id` NOT IN(3)

然后

SELECT * FROM `devices` WHERE `device_id` NOT IN(5)

然后您只获取第二个查询结果,因此您应该取回 ID 不是 5 的设备。

我会使用 implode,这样您就可以排除所有不需要的 ID。

$excluded = implode(',', $config['exclude_devices']);
$deviceinformation = mysqli_query($db, "SELECT * FROM `devices` WHERE `device_id` NOT IN(" . $excluded . ")");
while ($row = mysqli_fetch_assoc($deviceinformation)) {
// do stuff here
}

演示:https://eval.in/536862
SQL 演示:http://sqlfiddle.com/#!9/e4ed47/2

关于php - 如何对数组运行 foreach 并将其包含在 SQL 查询中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36016156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com