sql >> データベース >  >> RDS >> Mysql

データベースの結果はオブジェクトまたは配列ですか?

    私は常にオブジェクトを使用してきましたが、クエリから直接データを入力することはありません。 'set'関数を使用してレイアウトを作成するので、結合や名前の衝突の問題を回避できます。 'full_name'の例の場合、おそらく'as'を使用して名前の部分を取得し、それぞれをオブジェクトに設定して、'get_full_name'をメンバーfnとして提供します。

    野心的な場合は、「get_age」にあらゆる種類のものを追加できます。生年月日を一度設定して、そこからワイルドになりましょう。

    編集:データからオブジェクトを作成する方法はいくつかあります。クラスを事前定義してオブジェクトを作成することも、「オンザフライ」で作成することもできます。

    ->いくつかのv簡略化された例-これで十分でない場合は、さらに追加できます。

    オンザフライ:

    $conn = DBConnection::_getSubjectsDB();  
    $query = "select * from studies where Status = 1";  
    $st = $conn->prepare( $query );  
    
    $st->execute();  
    $rows = $st->fetchAll();  
    foreach ( $rows as $row )  
    {  
        $study = (object)array();  
        $study->StudyId = $row[ 'StudyId' ];  
        $study->Name = $row[ 'StudyName' ];  
        $study->Investigator = $row[ 'Investigator' ];  
        $study->StartDate = $row[ 'StartDate' ];  
        $study->EndDate = $row[ 'EndDate' ];  
        $study->IRB = $row[ 'IRB' ];  
    
        array_push( $ret, $study );  
    } 
    

    事前定義:

    /** Single location info
    */
    class Location  
    {  
        /** Name  
        * @var string  
        */  
        public $Name;  
    
        /** Address  
        * @var string  
        */  
        public $Address;  
    
        /** City  
        * @var string  
        */  
        public $City;
    
        /** State
        * @var string
        */
        public $State;
    
        /** Zip
        * @var string
        */
        public $Zip;
    
        /** getMailing
        * Get a 'mailing label' style output
        */
        function getMailing()
        {  
             return $Name . "\n" . $Address . "\n" . $City . "," . $State . "  " . $Zip;
        }
    }
    

    使用法:

    $conn = DBConnection::_getLocationsDB();  
    $query = "select * from Locations where Status = 1";  
    $st = $conn->prepare( $query );  
    
    $st->execute();  
    $rows = $st->fetchAll();  
    foreach ( $rows as $row )  
    {  
        $location = new Location();  
        $location->Name= $row[ 'Name' ];  
        $location->Address = $row[ 'Address ' ];  
        $location->City = $row[ 'City' ];  
        $location->State = $row[ 'State ' ];  
        $location->Zip = $row[ 'Zip ' ];  
    
        array_push( $ret, $location );  
    } 
    

    その後、$ retをループして、宛名ラベルを出力できます。

    foreach( $ret as $location )
    { 
        echo $location->getMailing();
    }
    


    1. テーブルの作成後にdjangoDATABASE_OPTIONSのinit_commandsetengine =INNODBを削除するのはなぜですか?

    2. psql:致命的:ユーザー開発者のピア認証に失敗しました

    3. MySQLは最新の行のみに参加しますか?

    4. WindowsServer2019にXAMPPソフトウェアをインストールして構成する