Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL PDO fetchAll as数组,带整数索引_Php_Pdo_Pdostatement - Fatal编程技术网

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);
?>