【问题标题】:How to generate a multi-dimensional array from a PDO resultset?如何从 PDO 结果集中生成多维数组?
【发布时间】:2017-12-25 10:50:40
【问题描述】:

我正在尝试使用 PDO 查询的结果集创建一个数组。

我不确定如何生成我想要的数组结构。

require_once("../resource/Database.php");

$query ="SELECT username FROM users";
$select = $db->prepare($query);
$select->execute(array());  
foreach($select as $rs) :          
    $testing = "array('city'=>".$rs['citynames']"),"

$cities = array(
    echo $testing;
);  

我想要这个结果:

$names= array(
    array('name'=>'Los Angeles'),
    array('name'=>'Chicago'),
    array('name'=>'Houston'),
    array('name'=>'Phoenix'),
    array('name'=>'Philadelphia'),
    array('name'=>'San Antonio'),
    array('name'=>'Dallas',),
    array('name'=>'San Diego',),
    array('name'=>'San Jose', ),
    array('name'=>'Detroit', ),
    array('name'=>'San Francisco',),
    array('name'=>'Jacksonville', ),
    array('name'=>'Indianapolis', ),
    array('name'=>'Austin', ),
    array('name'=>'Columbus', ),
    array('name'=>'Fort Worth',),
    array('name'=>'Charlotte', ),
    array('name'=>'Memphis', ),
    array('name'=>'Baltimore', ),
);

【问题讨论】:

  • 这感觉像是额外的处理。您可以在查询中的 username 列上使用 name 的别名。你下一步怎么做?为什么要以这种方式准备结果集数据?

标签: php arrays multidimensional-array pdo resultset


【解决方案1】:

大概你正在尝试这样做?

require_once("../resource/Database.php");
$query ="SELECT username FROM users";
$select = $db->prepare($query);
$select->execute(array());
# You may have a snippet of code that you are missing, but incase not,
# you have to fetch the results while() to iterate or your results. I just
# copied your code and focused on the push, not the fact you didn't fetch
while($rs = $select->fetch(PDO::FETCH_ASSOC)) {
    $names[] = array('name'=>$rs['citynames']);
}

这是在in the manual 找到的数组推送。如果这不是你的意思,你将不得不澄清。

【讨论】:

    【解决方案2】:

    你应该指定sql查询输出格式:

    $query ="SELECT username FROM users";
    $select = $db->prepare($query);
    $select->execute(array());  
    foreach($select->fetchAll(PDO::FETCH_ASSOC) as $rs) {
       $testing[] = array('city' => $rs['citynames']);
    }
    
    var_dump($testing);
    

    【讨论】:

      猜你喜欢
      • 2018-04-14
      • 1970-01-01
      • 2014-08-24
      • 2018-07-12
      • 2012-01-25
      • 2015-03-31
      • 2022-01-17
      • 1970-01-01
      相关资源
      最近更新 更多