查询数组显示所有值 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