我在 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/