PHP-PDO - wysyłanie zapytań do bazy danych za pomocą metody query
Stronę tą wyświetlono już: 3734 razy
Wstęp
Metoda query obiektu klasy PDO umożliwia wysyłanie zapytań do bazy danych w dość podobny sposób jak stare metody wysyłania zapytań do baz danych omówione na stronie Programowanie → PHP - podstawy → PHP - skorowidz funkcji związanych z mySql-em. Ważne jest aby nie korzystać z tej metody w przypadku, gdy dane wykorzystywane w zapytaniu pochodzą od użytkownika. W takim przypadku aby uniknąć możliwości celowego lub przypadkowego wstrzykiwania kodu SQL stosuje się inne metody, które zostaną omówione na innej podstronie tego działu.
Pobieranie danych z bazy danych
W przypadku wysyłania zapytania SELECT, jeżeli tylko zapytanie się powiedzie zwrócony powinien zostać obiekt klasy PDOStatement. Warto przyjrzeć się temu obiektowi nieco bliżej, toteż poniżej zamieszczam spis podstawowych jego metod:
- public bool bindColumn ( mixed $column , mixed &$param [, int $type [, int $maxlen [, mixed $driverdata ]]] )
- public bool bindParam ( mixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]] )
- public bool bindValue ( mixed $parameter , mixed $value [, int $data_type = PDO::PARAM_STR ] )
- public bool closeCursor ( void )
- public int columnCount ( void )
- public void debugDumpParams ( void )
- public string errorCode ( void )
- public array errorInfo ( void )
- public bool execute ([ array $input_parameters ] )
- public mixed fetch ([ int $fetch_style [, int $cursor_orientation = PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]] )
- public array fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] )
- public mixed fetchColumn ([ int $column_number = 0 ] )
- public mixed fetchObject ([ string $class_name = "stdClass" [, array $ctor_args ]] )
- public mixed getAttribute ( int $attribute )
- public array getColumnMeta ( int $column )
- public bool nextRowset ( void )
- public int rowCount ( void )
- public bool setAttribute ( int $attribute , mixed $value )
- public bool setFetchMode ( int $mode )
Spośród powyższego zbioru najbardziej interesujące są następujące metody:
- fetch - pobiera rekord danych i zwraca go jako tablicę asocjacyjną;
- rowCount - zwraca liczbę rekordów zwróconych przez zapytanie;
- closeCursor - zamyka poprzednio zwrócony obiekt zapytania
Przykładowa realizacja zapytania typu SELECT może wyglądać następująco:
- $books = $pdo->query('SELECT id, title, author FROM books'); // wysyłanie zapytania
- echo('<p>Liczba dostępnych książek: ' . $books->rowCount()); // wyświetlanie ile książek jest w bazie danych
- echo('<ul>');
- foreach($books as $book) // iterowanie po książkach
- {
- echo('<li>"' . $book['title'] . '" ' . $book['author'] . '</li>'); // wyświetlanie tytułu i autora książki
- }
- echo('</ul>');
- $books->closeCursor(); // zamykanie obiektu zapytania
Powyższy kod można zrealizować również z wykorzystaniem metody fetch w następujący sposób:
- $books = $pdo->query('SELECT id, title, author FROM books'); // wysyłanie zapytania
- echo('<p>Liczba dostępnych książek: ' . $books->rowCount()); // wyświetlanie ile książek jest w bazie danych
- echo('<ul>');
- while($book = $books->fetch()) // dopóki metoda fetch nie zwróci FALSE to zwracana wartość jest rekordem danych
- {
- echo('<li>"' . $book['title'] . '" ' . $book['author'] . '</li>'); // wyświetlanie tytułu i autora książki
- }
- echo('</ul>');
- $books->closeCursor(); // zamykanie obiektu zapytania
Gdy metoda query zawiedzie, to zwracana jest wartość FALSE.
Wysyłanie innych zapytań do bazy danych
Metoda query umożliwia wysyłanie wszystkich typów zapytań SQL i tych, które modyfikują lub wstawiają dane do bazy danych jak również tych, które zmieniają ustawienia połączenia z bazą danych. To jak takie zapytanie należy realizować zostało opisane w dziele Programowanie → Podstawy SQL-a.

Tytuł:
PHP 8 i SQL. Programowanie dla początkujących w 43 lekcjach
Autor:
Mariusz Duka

Tytuł:
CodeIgniter 4. Zaawansowane tworzenie stron WWW w PHP
Autor:
Łukasz Sosna

Tytuł:
PHP 7 MySQL 8 i Maria DB Praktyczny podręcznik
Autor:
Steve Prettyman, Adrian W. West

Tytuł:
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie V
Autor:
Larry Ullman

Tytuł:
PHP 7. Algorytmy i struktury danych
Autor:
Mizanur Rahman

Tytuł:
PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty. Wydanie V
Autor:
Luke Welling, Laura Thomson

Tytuł:
PHP i jQuery. Techniki zaawansowane. Wydanie II
Autor:
Keith Wald, Jason Lengstorf

Tytuł:
Laravel 4. Podstawy tworzenia aplikacji w PHP
Autor:
Raphaël Saunier

Tytuł:
Magento. Przewodnik dla programistów PHP
Autor:
Allan MacGregor

Tytuł:
JavaScript dla programistów PHP
Autor:
Stoyan Stefanov