gpt4 book ai didi

php - 在 SQL 中多次选择一个值

转载 作者:行者123 更新时间:2023-11-30 21:44:13 25 4
gpt4 key购买 nike

我在 PHP 中有一个代码,我想在其中显示多次值,因此,即使这些值在它们之间是相同的。我的代码很简单:

$sql = "SELECT photo from table WHERE username IN ('1','2','2') ORDER BY id DESC ";

$res = array();
$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result)){
array_push($res, $row['photo']);
}
echo json_encode($res);

但此代码仅显示(在 json 中)两个值的数组(因为用户名 2 的 photo 的值相同)。我想要实现的是创建一个数组,其值的数量与我定义的用户名的数量完全相同 WHERE username IN ('1','2','2') (所以在这里, 3 个值)。我希望你能理解我,谢谢你帮助我!

最佳答案

我认为您想要的是在最终结果中列出重复项。由于您的 SQL 将只检索唯一项,因此我们的想法是将用户名包含在 SQL 结果集中。然后使用原始用户名列表 ($userNames) 并为每个人添加照片。

我使用 mysqli_fetch_all() 来简化获取所有数据的过程,然后使用 array_column() 使用户名成为照片的键。

$userNames = array(1,2,2);
$sql = "SELECT username, photo
from table
WHERE username IN ('".implode("','", $userNames)."')
ORDER BY id DESC ";

$res = array();
$result = mysqli_query($con,$sql);
$photos = mysqli_fetch_all($result, MYSQLI_ASSOC);

$photos = array_column($photos, "photo", "username");
foreach ( $userNames as $user ) {
if ( isset($photos[$user])) {
$res[] = $photos[$user];
}
else {
$res[] = '';
}
}
echo json_encode($res);

关于php - 在 SQL 中多次选择一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50204212/

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