-1

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) ;
}
4

1 に答える 1

1

これはこの方法では不可能です..

$data->name複数の名前がある場合、どのように呼び出すことができますか?

このようにする代わりに

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

  foreach($dataArray as $data){
    echo $data->name;
   }
于 2012-12-24T11:07:57.567 に答える