Przejdź do treści

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();
Artykuł: Harmonogram egzaminów maturalnych

Harmonogram egzaminów maturalnych

Artykuł: Staże w Hiszpanii

Staże w Hiszpanii

Artykuł: Conformité Européenne

Conformité Européenne

Artykuł: Display Stream Compression

Display Stream Compression

Artykuł: High Dynamic Range

High Dynamic Range

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły