0

mysql データからデータを取得し、そこからオブジェクトを作成しようとしています。ここで私はいくつかのコードを書きました。データベースから物事の詳細を取得しています。結果ごとに、最終的に配列出力とマージされるオブジェクトを作成する必要があります。この$output配列は、最終的にjsonとして出力されます。

エラーが発生しています:

array_merge(): Argument #2 is not an array

PHP でオブジェクトの配列を作成する方法は?

public function getDetails()    //This is a class function
{
    $query = "SELECT * FROM `thing` WHERE `id` = :thingId";
    $stmt = $dbh->prepare ( $query );
    $stmt->bindParam ( ":thingId" , $_GET['thingId']  );
    $stmt->execute ( );
    $rslt  =  $stmt->fetch ( );
    $thingName  = $rslt['name'];
    $thingOwnerId = $rslt['userId'];
    $thingDescription = $rslt['thingDescription'];

    // Getting the thing owner details
    $query = "SELECT * from `user` WHERE ( `id` = :id ) ";    
    $stmt = $dbh->prepare( $query );
    $stmt->bindParam ( ":id" , $thingOwnerId );
    $stmt->execute(  );
    $rslt = $stmt->fetch ( );
    $thingOwnerName = $rslt['firstName']." ".$rslt['lastName'];
}

$query = "SELECT * FROM `things` ; ";
$s = $dbh->prepare($query);
$s->execute();
$r = $s->fetchAll();
foreach($r as $r1)
{
    $newThing = new Thingy($r1['id']);
    $newThing->getDetails();
    $output =  array_merge($output,$newThing);
}

$output2 = json_encode($output);
header('content-type: application/json');
echo $output2;
4

3 に答える 3

1

ここでの作業を省いて、PDO::FETCH_CLASSとして使用できます$fetch_style。基本的に、カスタム クラスを指定できます。そのプロパティには、クエリの各行からの一致する戻り値を設定できます。メソッド シグネチャの最初の引数に注意してください。

public array PDOStatement::fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] )

ドキュメントの例 #4 に示されているようにPDOStatement::fetchAll()

<?php
class fruit {
    public $name;
    public $colour;
}

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

$result = $sth->fetchAll(PDO::FETCH_CLASS, "fruit");
var_dump($result);

お役に立てれば :)

于 2013-11-08T12:55:48.110 に答える