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