Dokumentacja PHP pod egzamin INF.03. Każda sekcja zawiera opis, zastosowanie, przykłady i najczęstsze błędy.
Co robi? Łączy PHP z bazą danych MySQL.
Częstotliwość: ~90%
$conn = mysqli_connect("localhost","root","","baza");
Wysyła zapytanie SQL do bazy danych.
$result = mysqli_query($conn, $sql);
Częstotliwość: ~85%
Pobiera rekord jako tablicę asocjacyjną.
$row = mysqli_fetch_assoc($result); echo $row['nazwa'];
Przechodzi po wszystkich rekordach zwróconych przez SELECT.
while($row = mysqli_fetch_assoc($result)){
echo $row['nazwa'];
}
Częstotliwość: ~80%
Instrukcja warunkowa.
if($wiek >= 18){
echo "Pełnoletni";
}
Sprawdza czy zmienna istnieje.
if(isset($_POST['btn'])){
}
Częstotliwość: ~75%
Pobieranie danych z formularza.
$imie = $_POST['imie'];
Pobieranie danych z adresu URL.
$id = $_GET['id'];
Sprawdza ilość rekordów.
if(mysqli_num_rows($result) > 0){
echo "Są rekordy";
}
Przygotowane zapytanie SQL.
$stmt = $conn->prepare("INSERT INTO osoby(imie) VALUES (?)");
Przypisuje zmienne do zapytania.
$stmt->bind_param("s", $imie);
Wykonuje przygotowane zapytanie.
$stmt->execute();
Dodawanie rekordów do bazy.
$sql = "INSERT INTO osoby(imie) VALUES('Jan')";
mysqli_query($conn, $sql);
Aktualizacja danych.
$sql = "UPDATE osoby SET imie='Adam' WHERE id=1";
Usuwanie rekordów.
$sql = "DELETE FROM osoby WHERE id=1";
Przekierowanie użytkownika.
header("Location:index.php");
Pobiera rekord jako tablicę.
$row = mysqli_fetch_array($result); echo $row['nazwa'];
Przykładowe polecenie CKE:
Wyświetl wszystkie produkty znajdujące się w tabeli
produkty.
Dla każdego produktu wyświetl jego nazwę.
$conn = mysqli_connect("localhost","root","","baza");
$result = mysqli_query($conn, "SELECT * FROM produkty");
while($row = mysqli_fetch_assoc($result)){
echo $row['nazwa'];
echo "<br>";
}
Przykładowe polecenie CKE:
Wykonaj formularz umożliwiający dodanie nowej osoby
do tabeli osoby.
Po zatwierdzeniu formularza dane mają zostać zapisane
w bazie danych.
<form method="post">
<input type="text" name="imie">
<input
type="submit" name="btn">
</form>
<?php
if(isset($_POST['btn'])){
$imie = $_POST['imie'];
$sql = "INSERT INTO osoby(imie) VALUES('$imie')";
mysqli_query($conn, $sql);
}
?>
Przykładowe polecenie CKE:
Wyświetl dane z tabeli produkty
w postaci tabeli HTML.
Każdy rekord ma być wyświetlony w osobnym wierszu.
$result = mysqli_query($conn, "SELECT * FROM produkty");
echo "<table>";
while($row = mysqli_fetch_assoc($result)){
echo "<tr>";
echo "<td>".$row['id']."</td>";
echo "<td>".$row['nazwa']."</td>";
echo "</tr>";}
echo "</table>";
Przykładowe polecenie CKE:
Zaktualizuj cenę produktu o identyfikatorze 1 na wartość 500 zł.
$conn = mysqli_connect("localhost","root","","baza");
$sql = "UPDATE produkty SET cena = 500 WHERE id = 1";
mysqli_query($conn, $sql);
Przykładowe polecenie CKE:
Usuń produkt o identyfikatorze 1 z bazy danych.
$conn = mysqli_connect("localhost","root","","baza");
$sql = "DELETE FROM produkty WHERE id = 1";
mysqli_query($conn, $sql);
Przykładowe polecenie CKE:
Wyświetl nazwy wszystkich produktów, których cena jest większa od 100 zł.
$conn = mysqli_connect("localhost","root","","baza");
$result = mysqli_query($conn, "SELECT * FROM produkty WHERE cena > 100");
while($row = mysqli_fetch_assoc($result)){
echo $row['nazwa'];
echo "<br>";
}
Przykładowe polecenie CKE:
Wyświetl nazwy produktów wraz z nazwą kategorii.
$result = mysqli_query($conn, "SELECT produkty.nazwa, kategorie.nazwa FROM produkty JOIN kategorie ON produkty.idKat = kategorie.id");
while(
$row = mysqli_fetch_assoc($result)){
echo $row['nazwa'];
}
Wyświetl liczbę produktów.
$result = mysqli_query($conn, "SELECT COUNT(*) AS liczba FROM produkty"); $row = mysqli_fetch_assoc($result); echo $row['liczba'];
Najprostszy i najczęściej spotykany schemat PHP + MySQL wygląda tak:
?php
// Połączenie z bazą
$conn = new mysqli(
"localhost",
"root",
"",
"samochody"
);
// Sprawdzenie połączenia
if ($conn->connect_error) {
die("Błąd połączenia: " . $conn->connect_error);
}
// Zapytanie SQL
$sql = "SELECT * FROM pojazdy";
// Wysłanie zapytania do bazy
$result = $conn->query($sql);
// Odczyt wyników
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo "Marka: " . $row["marka"] . "
";
echo "Model: " . $row["model"] . "
";
echo "Cena: " . $row["cena"] . "
";
}
} else {
echo "Brak rekordów";
}
// Zamknięcie połączenia
$conn->close();
?>
Jeśli chcesz pobrać tylko pierwszy rekord:
$result = $conn->query($sql); $row = $result->fetch_assoc(); echo $row["marka"]; echo $row["model"];
Typowe zadanie na egzaminie INF.03:
?php
$polaczenie = mysqli_connect(
"localhost",
"root",
"",
"samochody"
);
$zapytanie = "SELECT marka, model, cena FROM pojazdy";
$wynik = mysqli_query(
$polaczenie,
$zapytanie
);
while($wiersz = mysqli_fetch_array($wynik))
{
echo $wiersz['marka'] . " ";
echo $wiersz['model'] . " ";
echo $wiersz['cena'];
echo "
";
}
mysqli_close($polaczenie);
?>