PDO fetchAll返回数组中的数组或数组中的对象

时间:2012-12-24 11:03:19

标签: php mysql pdo

我有一个恼人的问题,无论我告诉PDO返回一个数组或对象,它总是把它放在另一个数组中。即:

Array (
    [0] => stdClass Object ( [name] => Test Topper [urlName] => test-topper )
    [1] => stdClass Object ( [name] => Test Topper [urlName] => test-topper )
    [2] => stdClass Object ( [name] => adfg dfg [urlName] => adfg-dfg ) 
    [3] => stdClass Object ( [name] => adfg dfg [urlName] => adfg-dfg )
)

如何阻止此行为,最终得到:

stdClass Object ( [name] => Test Topper [urlName] => test-topper ) 
[1] => stdClass Object ( [name] => Test Topper [urlName] => test-topper )
[2] => stdClass Object ( [name] => adfg dfg [urlName] => adfg-dfg ) 
[3] => stdClass Object ( [name] => adfg dfg [urlName] => adfg-dfg )

所以我可以使用$data->name代替$data[0]->name来访问属性?

这是负责获取数据的PHP:

public function fetchToppersAction($type, $orderBy, $limit)
{
    $PDOParams = array() ;
    $SQL = 'SELECT name, urlName FROM toppers_images, toppers
            LEFT JOIN meta_descriptions AS md ON md.topperId = toppers.id
            ' ;
    if($type)
    {
        $SQL .= 'WHERE typeId = ?' ;
        array_push($PDOParams, $type) ;
    }
    $SQL .= 'ORDER BY ? LIMIT ?' ;
    array_push($PDOParams, $orderBy, $limit) ;

    $r = $this->db->prepare($SQL) ;
    $r->execute($PDOParams) ;
    return $r->fetchAll(PDO::FETCH_OBJ) ;
}

1 个答案:

答案 0 :(得分:1)

这种方式不可能......

如果您有多个姓名,如何拨打$data->name

而不是像这样做

   /* 
    * $dataArray is the array which you are getting from $r->fetchAll(PDO::FETCH_OBJ);
    *
    */

  foreach($dataArray as $data){
    echo $data->name;
   }