Część 11 kursu PHP pod kątem INF.03: SQL: odczyt danych. Teoria w skrócie i 16 ćwiczeń z automatycznym sprawdzaniem.
Do bazy łączymy się funkcją mysqli_connect() , podając host, użytkownika, hasło i nazwę bazy. Wynik zapisujemy w zmiennej — to uchwyt połączenia, którego używamy przy każdym zapytaniu.
$polaczenie = mysqli_connect('localhost', 'root', '', 'szkola');
if (!$polaczenie) {
exit('Brak polaczenia z baza');
}
mysqli_set_charset($polaczenie, 'utf8mb4');
echo 'Polaczono z baza szkola';
$polaczenie = mysqli_connect('localhost', 'root', '', 'szkola');
if (!$polaczenie) {
exit('Brak polaczenia z baza');
}
mysqli_set_charset($polaczenie, 'utf8mb4');
echo 'Polaczono z baza szkola';
Co zwraca mysqli_connect()?
Poprawna: d) Połączenie zwraca uchwyt używany dalej.
Zapytanie SELECT pobiera dane. Wysyłamy je przez mysqli_query() , a wynik odczytujemy wiersz po wierszu funkcją mysqli_fetch_assoc() — zwraca ona tablicę asocjacyjną albo null , gdy wierszy już nie ma.
$wynik = mysqli_query($polaczenie, 'SELECT imie, klasa FROM uczniowie ORDER BY imie');
while ($wiersz = mysqli_fetch_assoc($wynik)) {
echo '<p>' . htmlspecialchars($wiersz['imie'])
. ' - ' . htmlspecialchars($wiersz['klasa']) . '</p>';
}
echo '<p>Razem: ' . mysqli_num_rows($wynik) . '</p>';
$wynik = mysqli_query($polaczenie, 'SELECT imie, klasa FROM uczniowie ORDER BY imie');
while ($wiersz = mysqli_fetch_assoc($wynik)) {
echo '<p>' . htmlspecialchars($wiersz['imie'])
. ' - ' . htmlspecialchars($wiersz['klasa']) . '</p>';
}
echo '<p>Razem: ' . mysqli_num_rows($wynik) . '</p>';
Co zwraca mysqli_fetch_assoc()?
Poprawna: a) Funkcja zwraca jeden wiersz w tablicy asocjacyjnej.
Zapytanie może się nie udać z powodu literówki, braku tabeli albo braku uprawnień. mysqli_query() zwraca wtedy false , więc warto sprawdzić wynik, zanim użyjemy go dalej.
$sql = 'SELECT imie FROM uczniowie';
$wynik = mysqli_query($polaczenie, $sql);
if ($wynik === false) {
echo 'Nie udalo sie pobrac danych';
} else {
echo 'Wierszy: ' . mysqli_num_rows($wynik);
}
mysqli_close($polaczenie);
$sql = 'SELECT imie FROM uczniowie';
$wynik = mysqli_query($polaczenie, $sql);
if ($wynik === false) {
echo 'Nie udalo sie pobrac danych';
} else {
echo 'Wierszy: ' . mysqli_num_rows($wynik);
}
mysqli_close($polaczenie);
Co zwraca nieudane zapytanie?
Poprawna: b) Błąd zapytania daje w wyniku false.