PHP - obiektowe korzystanie z bazy danych w PHP 5 - MySQLi - instrukcje przygotowywane

DZIAŁANIE: brak działania

Kod:

Ewentualne Objaśnienia:

Biblioteka mysqli obsługuje instrukcje przygotowywane - jest to idealna sprawa do skracania czasu pracy kiedy należy wykonać dużą liczbę zapytań z różnymi zestawami danych. Instrukcje te na dodatek chronią przed atakami punktowymi SQL.

Działanie polega na przesłaniu do serwera MySQL szablonu zapytania, które będzie dalej wykonywane, a następnie oddzielnie wysyłane są dane do tego zapytania. Do jednej takiej instrukcji przygotowywanej można wysłać wiele zestawów takich samych danych - co jest świetnym rozwiązaniem przy wstawianiu masowym danych.

Powyżej mamy przykładowy kod, zobaczmy :
- mamy zapytanie gdzie miejscu zmiennych wstawiamy znaki zapytania ( bez żadnych cudzysłowów itd )
- wywołanie $db->prepare ( wersja proceduralna mysqli_stmt_prepare() ) - tworzony jest obiekt instrukcji lub zasobu, który zostanie użyty w trakcie przetwarzania
- obiekt taki posiada metodę bind_param() ( proceduralnie mysqli_stmt_bind_param() ). Metoda ta służy jak się domyślacie do wskazania zmiennych, które zastąpią wcześniejsze znaki zapytania w zapytaniu SQL
- pierwszy parametr czyli sssd - to pewien ciąg formatujący oznaczający, że 3 kolejne parametry to ciągi znaków (string) oraz liczba rzeczywista (double). Inne oznaczenia to : i - intiger oraz b - blob
- po 1 parametrze wymieniamy nasze zmienne (wiadome, że liczba musi być taka sama jak w zapytaniu )
- wywołanie $instr->execute() - ( proceduralnie mysqli_stmt_execute() ) uruchamia wykonanie zapytania
- po wykonaniu odczytujemy liczbę dodanych ( czy zaktualizowanych , usuniętych ) wierszy $instr->affected_rows .

Istnieje również możliwość wiązania wyników. Jeżeli korzystamy tutaj z zapytania SELECT można wywołać polecenie $instr->bind_result() ( mysqli_stmt_bind_result() ) aby pobrać listę zmiennych, do których jako kolumn zostaną wpisane dane wynikowe. Aby wyświetlać wyniki użyjemy $instr->fetch() ( mysqli_stmy_fetch() ).

Do mysqli jeszcze powrócę w przyszłości bo jest to bardzo dobra biblioteka i o wiele wygodniejsze i bardziej profesjonalne jest korzystanie z niej niż ze standardowego moduły mysql .