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

标签 php mysql sql

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

相关文章:

mysql - 如何获取示例数据库以在 phpMyAdmin 上使用 SQL?

javascript - Laravel Echo Listener 无法在前端工作

php - 如何在 PHP 5.3 中使用自动加载器构建工厂、命名空间和类?

mysql - 如何将 'greater' 筛选器添加到结果 Pane 列中的每个 'minimum' 值

不删除已有记录的mysql表恢复

mysql:在同一列中比较后更改值

mysql - 什么样的 SQL 查询使用 rails 在控制台中检索数据

mysql - 如何在 MYSQL 中手动阻止然后取消阻止特定的 IP/主机名

php - 如何制作 PHP 扩展

php - 我们可以在为类属性赋值时使用常量代替属性名称吗?