2016-12-01 17 views
1

SQLテーブルをPHPのオブジェクトコレクションに逆シリアル化しようとしています。 C#のでオブジェクトコレクションへのSQLテーブルの逆シリアル化

、同等のは次のようになります。

public class Object 
{ 
    public string objectProperty { get; set; } 
    public string anotherProperty { get; set; } 
} 

public void Deserialize() 
{ 
    List<Object> collection = new List<Object>(); 

    // Assuming that we have an SQL statement returning a row 

    foreach (Row row in returnedSqlRow) 
    { 
     collection.Add(new Object 
     { 
      objectProperty = row["objectProperty"], 
      anotherProperty = row["anotherProperty"] 
     }); 
    } 
} 

私と仕事をするObjectsの素敵なコレクションを与えることになります。私のPHPで

私は、次のしている:私は簡単にそうように列から各値にアクセスすることができます

$books = pg_query($conn, 'SELECT cataloguenumber, title, author, description, price, enteredby FROM CSBooks');

while($row = pg_fetch_row($books)) { 

     echo $row[0] . '<br>'; 
     echo $row[1] . '<br>'; 
     echo $row[2] . '<br>'; 
     echo $row[3] . '<br>'; 
     echo $row[4] . '<br>'; 
     echo $row[5] . '<br>'; 
    } 
私のSQL文ビーイングと

class Book { 
    public $CN; // cataloguenumber 
    public $title; 
    public $author; 
    public $description; 
    public $price; 
    public $enteredby; 
} 

しかし、私はオブジェクトコレクションを作成する方法と、その行をBookオブジェクトにエシリアライズして格納します。 PHPに相当するものはありますか?私はpg_fetch_object()を見ましたが、それは私が探しているものではないようです。

答えて

1

解決策はPDOとPDOStatement::fetchObjectを使用して、すべてのpg_ *関数を抽象化し、dbのやりとりをより簡単に管理できるようにすることだと思います。

デフォルトでは配列の代わりにstdObjectが返されますが、オブジェクトにマップすることができます。

あなたは本当に代わりにPDOのPG_ *関数を使用する必要がある場合は、あなたのクラスに、あなただけのコンストラクタを書く

$a = ['a'=>'bla', 'b'=>1]; 
$shame = (object) $a; 

(私はそれを示唆して恥ずかしい)...汚れたソリューションがあるでしょう列をオブジェクトフィールドにバインドする...

+0

完璧、ありがとう! –

関連する問題