środa,
Pobieranie rekordów w stylu obiektowym
Aby w pełni zrozumieć prezentowany przykład, wymagana jest znajomość zagadnień przedstawionych w naszym cyklu „Wprowadzenie do MySQLi”. Wykorzystana w przykładzie tabela jest dostępna do pobrania.
Rozszerzenie mysqli pozwala na programowanie w stylu obiektowym. Dostępne metody działają w podobny sposób jak ich proceduralne odpowiedniki, jednak istnieją pewne różnice, np. typ zwracanych danych. Aby rozpocząć pracę z bazą MySQL z poziomu języka PHP, pierwszym krokiem musi być nawiązanie połączenia, służy do tego konstruktor o nazwie mysqli (wiersz nr 7). Próba połączenia może zakończyć się niepowodzeniem, w przykładzie do obsługi błędów wykorzystano własności mysqli::$ connect_errno oraz mysqli::$connect_error. Pierwsza z nich zawiera wartość kodu błędu, który wystąpił podczas ostatniej próby połączenia lub zero w przypadku powodzenia. Własność mysqli::$connect_error zawiera opis ostatniego błędu połączenia.
<?php
define('DBHOST', 'localhost');
define('DBUSER', 'root');
define('DBPASS', 'hasło');
define('DBNAME', 'nazwa_bazy');
$mysqli = new mysqli(DBHOST, DBUSER, DBPASS, DBNAME);
if ($mysqli->connect_errno) {
printf("Connect failed: %sn", $mysqli->connect_error);
exit();
}
echo '<table><tr>
<th>Imię</th>
<th>Nazwisko</th>
</tr>';
$result = $mysqli->query("SELECT fname, lname FROM names ORDER BY lname ASC LIMIT 10");
while ($row = $result->fetch_object()){
printf('<tr><td>%s</td><td>%s</td></tr>', $row->fname, $row->lname);
}
echo '</table>';
$mysqli->close();
?>
W przypadku sukcesu wykonania zapytania typu SELECT, SHOW, EXPLAIN i DESCRIBE metoda query() zwraca obiekt mysqli_result lub wartość false w przypadku niepowodzenia. Aby odczytać zwrócone wiersze można użyć metody fetch_object(). Wyników zapytania (wierszy) może być wiele, dlatego najwygodniej posłużyć się konstrukcją pętli. W przykładowym kodzie wykorzystano pętlę while. W każdej iteracji pobierany jest kolejny wiersz, ma on postać obiektu o własnościach, których nazwy to nazwy kolumn w tabeli (lub tabelach), albo nazwy zastosowanych w zapytaniu aliasów.
Efekt działania skryptu
Imię | Nazwisko |
---|---|
Oren | Aguilar |
Callum | Barber |
Vincent | Beach |
Kennedy | Boone |
Harrison | Boone |
Honorato | Brooks |
Timothy | Burns |
Dolan | Burton |
Patrick | Calderon |
Ali | Callahan |