$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/