Centrum Kształcenia Zawodowego i Ustawicznego w Mrągowie

E14 - Wprowadzenie do MySQLi

wtorek,

E14 - Wprowadzenie do MySQLi

Rozszerzenie MySQLi (MySQL Improved Extension) zostało wprowadzone w piątej wersji języka PHP. W wersjach PHP wydawanych obecnie nie jest dostępne starsze rozszerzenie MySQL, Nie będzie go także na egzaminie, dlatego pozostaje jedynie wybór między MySQLi lub PDO (PHP Data Objects). Szukając materiałów w Internecie, trzeba zwracać uwagę czy nie dotyczą one wycofanego rozszerzenia. Można to poznać po przedrostku funkcji „mysql_”, np. mysql_connect(). Dopisanie literki „i” nie załatwia sprawy.

MySQLi pozwala na podejście do programowania w sposób obiektowy lub proceduralny. Znajdziesz tu przykłady w obydwu stylach. Kod powinien działać zarówno z bazą MySQL, jak i MariaDB. Dla uproszenia przykładów, zastosowane zapytanie SQL jest mało użyteczne, zwraca potęgę liczby dwa, to samo można wyliczyć bez udziału bazy danych, jednak kod ma tylko zademonstrować sposób pobierania wyniku zapytania.

W każdym przykładzie założono, że pobrany zostaje tylko jeden wiersz wyniku zapytania. Jeśli ma być ich więcej, należy zastosować pętlę. Materiał nie wyczerpuje możliwości prezentowanych funkcji, nie jest także skierowany dla osób całkowicie początkujących.

Styl proceduralny

Pierwszy przykład to maksymalne możliwe uproszczenie. Optymistycznie założono, że nie będzie żadnych błędów. Poniższy kod powinien posłużyć jedynie do zrozumienia kluczowych faz pracy z bazą danych, nie nadaje się do zastosowania w poważnej aplikacji.

W pierwszym wierszu nawiązywane jest połączenie. Przekazane zostają cztery parametry, nazwę hosta, nazwę użytkownika, hasło użytkownika oraz nazwę bazy danych. Oczywiście musisz wstawić tam rzeczywiste dane. Funkcja mysqli_connetct zwraca uchwyt do bazy danych ($link). Drugi wiersz to wykonanie zapytania, w trzecim pobrany przez mysql_fech_row() jeden wiersz wyników zapytania trafia jako argument do funkcji print_r(), w efekcie zostaje wyświetlony na ekranie.

$link = mysqli_connect("localhost", "user", "pass", "mysql");
$result = mysqli_query($link, "SELECT POW(2,10)");
print_r(mysqli_fetch_row($result));

Drugi przykład jest bardziej rozbudowany, zaimplementowano m.in. obsługę błędów. W drugim wierszu sprawdzane jest, czy udało się nawiązać połączenie, jeśli nie, wyświetlana jest informacja o błędzie oraz skrypt zostaje bezwarunkowo zakończony (die()). W siódmym wierszu kontrolowane poprawne wykonanie zapytania. W przypadku wystąpienia błędu wykonuje się wiersz 12. Jeśli pobrano wynik, w odróżnieniu od pierwszego przykładu, dodatkowo zwalniana jest pamięć związana z wynikiem (wiersz 10). Skrypt kończy się jawnym zamknięciem połączenia w wierszu nr 15.

$link = mysqli_connect("localhost", "user", "pass", "mysql");
if (mysqli_connect_errno()) {
    printf("Błąd połączenia: %sn", mysqli_connect_error());
    die();
}

if ($result = mysqli_query($link, "SELECT POW(2,12)")) {
    printf("Liczba zwróconych wierszy: %d.n", mysqli_num_rows($result));
    print_r(mysqli_fetch_row($result));
    mysqli_free_result($result);
} else {
	printf("Błąd: %sn", mysqli_error($link));
}

mysqli_close($link);

Styl obiektowy

Trzeci przykład to przekształcony na styl obiektowy kod z przykładu drugiego. Aby maksymalnie zachować podobieństwo, nie skorzystano z mechanizmu wyjątków.

$mysqli = new mysqli("localhost", "user", "pass", "mysql");
if ($mysqli->connect_errno) {
    printf("Błąd połączenia: %sn", $mysqli->connect_error);
    die();
}

if ($result = $mysqli->query("SELECT POW(2,14)")) {
    printf("Liczba zwróconych wierszy: %d.n", $result->num_rows);
    print_r($result->fetch_row());
    $result->close();
} else {
	printf("Błąd: %sn", $mysqli->error);
}

$mysqli->close();
Muzeum Powstania Warszawskiego

Muzeum Powstania Warszawskiego

Pomniki upamiętniające powstanie warszawskie

Pomniki upamiętniające powstanie warszawskie

Pomnik Powstania Warszawskiego

Pomnik Powstania Warszawskiego

Stanisław Sędziak

Stanisław Sędziak

Krystyna Krahelska

Krystyna Krahelska

Zdobycie Poczty Głównej

Zdobycie Poczty Głównej

Nasze technikum

Szkoły dla dorosłych

Pełna oferta edukacyjna