php - 使用 PHP,尝试从 MySQL 数据库中选择一个特定的查询会给我所有的东西

标签 php mysql

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

相关文章:

php - ERROR 1064 您的 SQL 语法有错误;

php - MySQL如何将所有列加在一起,其中pid = X

mysql - SQL 在整数值上添加逗号分隔符

php - 使用 WHERE IF 和 FIND_IN_SET() 函数进行 mysql 查询

php - 如何创建一个链接,将用户发送到另一个页面,然后将其转移到与该链接关联的另一个页面?

php - 从一张表迁移到另一张表

PHP继承和在父构造中设置变量

php - 如何使用 JOIN 和 GROUP BY 从两个表中计数

mysql - SQL/MySQL : Two statements in one query

mysql - EXPLAIN 打印中的额外信息 - 'Impossible WHERE noticed after reading const tables'