繁体   English   中英

有人可以帮我解决这个问题吗?

[英]Could someone help me with this query?

我更新了这个问题,因为它被指出要更改查询以及如何使用implode。 在阅读建议的SO帖子后,我再次添加了查询。 我还在学习PDO,所以如果我犯了错误,我会道歉。

这是查询:

$group_array = implode(',', $groups);
    $friend_array = implode(',', $friends);

    $stmt = $db->prepare("SELECT *
                          FROM statuses
                          WHERE parent_id = 0
                           AND (   user_id = :auth_id
                                OR FIND_IN_SET(group_id, :group_array)
                                OR FIND_IN_SET(user_id, :friend_array)
                               )
                          ORDER BY updated_at DESC LIMIT :start,
                                                         :per_page");

    $stmt->bindParam(':auth_id', $user_id);
    $stmt->bindParam(':group_array', $group_array);
    $stmt->bindParam(':friend_array', $friend_array);
    $stmt->bindParam(':start', $start);
    $stmt->bindParam(':per_page', $per_page);

    $stmt->execute();
    if ($stmt->rowCount() > 0) {
        while($row = $stmt->fetchAll()) {
            return $row;
        }
    }

当我var_dump朋友和组我得到以下结果:

friend数组:array(2){[0] => string(2)“25”[1] => string(2)“27”}

group array:array(2){[0] => NULL [1] => NULL}

当我使用以下查询测试它时,它只返回用户ID为26(auth_id)的状态,而不返回朋友数组id 25或27中的状态。

SELECT * FROM statuses WHERE parent_id = 0 AND (user_id = 26 OR FIND_IN_SET(group_id, '') OR FIND_IN_SET(user_id, 27)) ORDER BY updated_at DESC LIMIT 0, 10

有谁能告诉我对此有所了解?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM