INF.03 HUB - PHP

Dokumentacja PHP pod egzamin INF.03. Każda sekcja zawiera opis, zastosowanie, przykłady i najczęstsze błędy.

mysqli_connect()

Co robi? Łączy PHP z bazą danych MySQL.

Częstotliwość: ~90%

$conn = mysqli_connect("localhost","root","","baza");
Najczęstszy błąd: zła nazwa bazy lub brak połączenia.

mysqli_query()

Wysyła zapytanie SQL do bazy danych.

$result = mysqli_query($conn, $sql);

Częstotliwość: ~85%

mysqli_fetch_assoc()

Pobiera rekord jako tablicę asocjacyjną.

$row = mysqli_fetch_assoc($result);
echo $row['nazwa'];

while()

Przechodzi po wszystkich rekordach zwróconych przez SELECT.

while($row = mysqli_fetch_assoc($result)){
    echo $row['nazwa'];
}

Częstotliwość: ~80%

if()

Instrukcja warunkowa.

if($wiek >= 18){
    echo "Pełnoletni";
}

isset()

Sprawdza czy zmienna istnieje.

if(isset($_POST['btn'])){

}

Częstotliwość: ~75%

$_POST

Pobieranie danych z formularza.

$imie = $_POST['imie'];

$_GET

Pobieranie danych z adresu URL.

$id = $_GET['id'];

mysqli_num_rows()

Sprawdza ilość rekordów.

if(mysqli_num_rows($result) > 0){
    echo "Są rekordy";
}

prepare()

Przygotowane zapytanie SQL.

$stmt = $conn->prepare("INSERT INTO osoby(imie) VALUES (?)");

bind_param()

Przypisuje zmienne do zapytania.

$stmt->bind_param("s", $imie);

execute()

Wykonuje przygotowane zapytanie.

$stmt->execute();

INSERT

Dodawanie rekordów do bazy.

$sql = "INSERT INTO osoby(imie) VALUES('Jan')";

mysqli_query($conn, $sql);

UPDATE

Aktualizacja danych.

$sql = "UPDATE osoby SET imie='Adam' WHERE id=1";
Bez WHERE zmienisz wszystkie rekordy.

DELETE

Usuwanie rekordów.

$sql = "DELETE FROM osoby WHERE id=1";
Bez WHERE usuniesz wszystkie rekordy.

header()

Przekierowanie użytkownika.

header("Location:index.php");

mysqli_fetch_array()

Pobiera rekord jako tablicę.

$row = mysqli_fetch_array($result);

echo $row['nazwa'];

Gotowiec egzaminacyjny #1

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>";

}

Gotowiec egzaminacyjny #2

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);

}
?>

Gotowiec egzaminacyjny #3

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>";

Gotowiec egzaminacyjny #4 - UPDATE

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);
Bez WHERE zmienisz wszystkie rekordy.

Gotowiec egzaminacyjny #5 - DELETE

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);
Bez WHERE usuniesz wszystkie rekordy.

Gotowiec egzaminacyjny #6 - SELECT z warunkiem

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>";
}

Gotowiec egzaminacyjny #7 - JOIN

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'];

}

Gotowiec egzaminacyjny #8 - COUNT

Wyświetl liczbę produktów.

$result = mysqli_query($conn, "SELECT COUNT(*) AS liczba FROM produkty");

$row = mysqli_fetch_assoc($result);

echo $row['liczba'];

Gotowiec egzaminacyjny #Radzim1 - Połączenie z bazą danych + SQL [ft. Kazik]

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(); ?>

Gotowiec egzaminacyjny #Radzim2 - Pobranie tylko pierwszego rekordu

Jeśli chcesz pobrać tylko pierwszy rekord:

$result = $conn->query($sql);

$row = $result->fetch_assoc();

echo $row["marka"];
echo $row["model"];

Gotowiec egzaminacyjny #Radzim3 - W stylu egzaminu INF.03

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); ?>