首页 > 解决方案 > 查询数组显示所有值 2 次

问题描述

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

$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 次吗?

标签: phpmysqlarraysmultidimensional-arrayprepared-statement

解决方案


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

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

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


推荐阅读