$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'] 的位置。关于这是如何发生或发生了什么的任何想法?我很难过。
另外,question 有一个唯一的 id,而 question_id 是 answer 中映射到问题 id 的外键。 Answer 也有唯一的 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/