Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wyniki bazy danych jako obiekty czy tablice?

Zawsze korzystałem z obiektów - ale nie umieszczam danych bezpośrednio z zapytania. Używając funkcji „ustaw” tworzę układ, dzięki czemu unikam problemów z łączeniami i kolizjami nazw. W przypadku twojego przykładu 'full_name' prawdopodobnie użyłbym 'as', aby uzyskać części nazwy, ustaw każdy w obiekcie i zaoferuj 'get_full_name' jako element członkowski fn.

Jeśli czujesz się ambitny, możesz dodać różne rzeczy do „get_age”. Ustaw datę urodzenia raz i stamtąd zaszalej.

EDYCJA:Istnieje kilka sposobów na tworzenie obiektów z danych. Możesz predefiniować klasę i tworzyć obiekty lub tworzyć je „w locie”.

--> Kilka uproszczonych przykładów - jeśli to nie wystarczy, mogę dodać więcej.

w locie:

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

predefiniowane:

/** 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;
    }
}

wykorzystanie:

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

Następnie możesz zapętlić $ret i wyprowadzić etykiety adresowe:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co to jest iniekcja SQL drugiego poziomu

  2. Wydajność MySQL:wprowadzenie do JOIN w SQL

  3. Jak zrobić to zapytanie eav, aby uzyskać wynik poziomy?

  4. Czy indeksy przyspieszają> w porównaniu z MySQL?

  5. Czy konieczne jest uwolnienie danych wprowadzanych przez użytkownika z bazy danych?