$sql = 'SELECT id FROM question ORDER BY id';
    foreach ($dbh->query($sql) as $row) {
        $sql2 = 'SELECT id FROM answer WHERE question_id = ' . $row['id'];
        foreach ($dbh->query($sql2) as $row2) {
            $answers[] = array('ID' => $row2['id']);
        }
        $question[] = array('ID'=>$row['id'],
                            'answers' => $answers);
    }
    print_r($question);


使用$ sql2时,当我运行它时,它将为我提供question_id中的每个id,而不是选择等于$ row ['id']的位置。关于这是怎么回事或正在发生什么的任何想法?我很困惑

此外,问题具有唯一的ID,而question_id是答案中的外键,它映射到问题的ID。答案也具有唯一的ID值。

最佳答案

$answers = array();
foreach ($dbh->query($sql2) as $row2) {
    $answers[] = array('ID' => $row2['id']);
}




无关,但这对于准备好的语句来说是一个很好的用例。您的查询还应该参数化以确保卫生-是的,即使在这种情况下也是如此。

$sql1 = "SELECT...";
$sql2 = "SELECT id FROM answer WHERE question_id = ?";
$stmt2 = $dbh->prepare($sql2);
foreach ($dbh->query($sql) as $row) {
    foreach ($stmt2->execute($row['id']) as $row2) {

关于php - 使用PHP时,尝试从MySQL数据库中选择特定查询会给我一切,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16426225/

10-12 17:54
查看更多