Php 使用mysqli_fetch_assoc()构建ID数组
我正试图使用mysqli获取一系列“用户”已经回答的“问题”。我有一个questions_users表来实现这一点,我使用下面的代码找到一个用户,然后获取他们回答的所有问题,并构建一个他们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
$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)