Php MySQL PDO fetchAll as数组,带整数索引
我有一个有两列的表。表:Php MySQL PDO fetchAll as数组,带整数索引,php,pdo,pdostatement,Php,Pdo,Pdostatement,我有一个有两列的表。表:ctgtable和列:id和ctg。由于我完全从以前的mysql.*函数转移到PDO,我面临着一些愚蠢的错误(或者可能缺乏知识) 问题: 我想将整个表的ctg列(最多20行)选择到一个包含整数索引的数组中 我的方法 我认为最接近的解决办法是: <?php $sth = $dbh->prepare("SELECT id, ctg FROM ctgtable"); $sth->execute(); /* Fetch
ctgtable
和列:id
和ctg
。由于我完全从以前的mysql.*
函数转移到PDO
,我面临着一些愚蠢的错误(或者可能缺乏知识)
问题:
我想将整个表的ctg
列(最多20行)选择到一个包含整数索引的数组中
我的方法
我认为最接近的解决办法是:
<?php
$sth = $dbh->prepare("SELECT id, ctg FROM ctgtable");
$sth->execute();
/* Fetch all of the values of the second column */
$result = $sth->fetchAll(PDO::FETCH_COLUMN, 1);
var_dump($result);
?>
等等
样本结果
索引可以从0开始,也可以不从0开始。这对我来说无关紧要。我试着寻找这样一个可能的问题,但似乎没有一个与我的问题相关。您可以简单地执行以下操作
<?php
//connect to db
$array = array();//define array
$query = "SELECT * FROM ctgtable";
$result = $pdo->prepare($query);
$result->execute();
while ($row = $result->fetch()) {
$id = $row['id'];
$ctg = $row['ctg'];
$array[$id] = $ctg;
}
print_r($array);
//close connection
?>
您拥有的解决方案没有问题,您也可以调用而不是
fetchAll()
。如果您链接呼叫,它将如下所示:
$entries = $dbh->query("SELECT ctg FROM fruit")->fetchColumn();
你的方法很好。如果你不需要这个ID,为什么要查询它呢
MySQL上的约束越少,处理时间越短,最终会得到更好的结果。您是否计划从结果中使用“id”字段?此方法是否会更耗时?这只会获取列的第一个条目。我希望所有条目同时出现。不建议使用链式调用,因为它会妨碍可读性并可能导致意外结果。另外,解决方案是错误的。
fetchAll(PDO::FETCH_数组,0)代码>第一列^_^@詹托法兰尼斯特:编辑。FETCH\u数组中没有列号。但基本上,只查询您需要的,如果您不需要ID,就不要查询它。就这么简单。PDO::FETCH_数组是一个非标准PDO常量。某些系统支持see和PDO::FETCH_ASSOC。首选PDO::FETCH_列。
<?php
//connect to db
$array = array();//define array
$query = "SELECT * FROM ctgtable";
$result = $pdo->prepare($query);
$result->execute();
while ($row = $result->fetch()) {
$id = $row['id'];
$ctg = $row['ctg'];
$array[$id] = $ctg;
}
print_r($array);
//close connection
?>
$entries = $dbh->query("SELECT ctg FROM fruit")->fetchColumn();
<?php
$sth = $dbh->prepare("SELECT ctg FROM ctgtable");
$sth->execute();
/* Fetch all of the values in form of a numeric array */
$result = $sth->fetchAll(PDO::FETCH_ARRAY);
var_dump($result);
?>