Php 使用mysqli_fetch_assoc()构建ID数组

Php 使用mysqli_fetch_assoc()构建ID数组,php,mysqli,Php,Mysqli,我正试图使用mysqli获取一系列“用户”已经回答的“问题”。我有一个questions_users表来实现这一点,我使用下面的代码找到一个用户,然后获取他们回答的所有问题,并构建一个他们id的数组,这样我就可以排除这些问题被选为新问题来回答 $qusAnswered = array(); $DoWeHaveUsersql = "SELECT * FROM users WHERE `checkid`=".$checkid; $DoWeHaveUserresult = $conn->quer

我正试图使用mysqli获取一系列“用户”已经回答的“问题”。我有一个questions_users表来实现这一点,我使用下面的代码找到一个用户,然后获取他们回答的所有问题,并构建一个他们id的数组,这样我就可以排除这些问题被选为新问题来回答

$qusAnswered = array();
$DoWeHaveUsersql = "SELECT * FROM users WHERE `checkid`=".$checkid;
$DoWeHaveUserresult = $conn->query($DoWeHaveUsersql);


if ($DoWeHaveUserresult->num_rows > 0) {//we've got a user
    $row = mysqli_fetch_assoc($DoWeHaveUserresult);

    $userId = $row['id'];
    $checkQuestionSql = "SELECT * FROM questions_users WHERE `user_id`=".$userId;//get all the questions_users records

    $checkQuresult = mysqli_query($conn, $checkQuestionSql);

    if (mysqli_num_rows($checkQuresult) > 0) {
        // make an array of all the id's of questions answered
        while($Qu = mysqli_fetch_assoc($checkQuresult)) {
            $qusAnswered[] = $Qu['question_id'];
        }
    } 
    $newQuestionSql = "SELECT * FROM questions WHERE id NOT IN (".implode(',', $qusAnswered).") LIMIT 1";
}
问题是我在构建$qusAnswered阵列时。根据数据库中的内容,它应该只包含值3,因为这是他们回答的问题的id。出于某种原因,$qusAnswered实际上看起来像

array('1','2');
我不确定我做错了什么,如果有人能为我指出显而易见的事情,我将不胜感激

var$newQuestionSql中的SQL如下所示:

SELECT * FROM questions WHERE id NOT IN (1,2) LIMIT 1
应该是:

SELECT * FROM questions WHERE id NOT IN (3) LIMIT 1

我的join fu没有我想象的那么好,但下面是如何在一个查询中实现这一点,并且:


我想建议你只提出一个简单的问题

也许这会解决你的问题

SELECT * from questions where id IN (SELECT GROUP_CONCAT(question_id) FROM `questions_users` WHERE `user_id`=1)

请不要直接将变量放入查询中。你可以通过一个连接查询来实现这一点。在我看来,这个查询很好,我认为这个表不包含你所认为的内容。如果手动执行查询会发生什么情况?
SELECT * from questions where id IN (SELECT GROUP_CONCAT(question_id) FROM `questions_users` WHERE `user_id`=1)