查询数组显示所有值 2 次

query to array show all values 2 times

我想将查询放入一个数组中,但我在使用数组时遇到了问题。 这是我的代码:

$stmt = $this->db->prepare("
    SELECT id, sentence, form
    FROM exercises
    ORDER BY rand()
    LIMIT 1
");
$stmt->execute();

while ($row = $stmt->fetch()) {
    $data[] = $row;
}
var_dump($data);

输出:

array(1) { 
    [0]=> array(6) { 
        ["id"]=> string(1) "6" [0]=> string(1) "6" ["sentence"]=> string(18) "This is a sentence" [1]=> string(18) "This is a sentence" ["form"]=> string(5) "Form3" [2]=> string(5) "Form3" 
    } 
}

但我希望数组是这样的:

array(1) { 
    [0]=> array(6) { 
        ["id"]=> string(1) "6" ["sentence"]=> string(18) "This is a sentence"  ["form"]=> string(5) "Form3" 
    } 
}

有人能告诉我为什么每个值都显示 2 次吗??

值显示了 2 次,因为 PDOStatement::fetch 的默认提取样式选项是 PDO::FETCH_BOTH,returns 一个由数字和列名索引的数组。

如果只想获取列名,请使用$row = $stmt->fetch(PDO::FETCH_ASSOC)

您可以在此处的 PHP 手册中找到更多信息:https://www.php.net/manual/en/pdostatement.fetch.php