<?> PHP NOVA invictum.hr
Izdanje 2026.
Poglavlje 27

Osnovni SQL

Pišemo jasne SELECT, INSERT, UPDATE i DELETE upite te uvodimo transakcije za promjene koje moraju uspjeti kao cjelina.

27 min čitanja Srednje razina PHP 8.5 ciljna verzija

Nakon ovog poglavlja

Što ćete znati napraviti

  • Dohvatiti, filtrirati, sortirati i straničiti retke.
  • Sigurno mijenjati podatke uz precizan WHERE.
  • Objasniti atomarnost transakcije.

Pitajte točno

Dohvat, filter, sortiranje i limit

SELECT navodi potrebne stupce; SELECT * često prenosi više podataka i skriva ugovor rezultata. WHERE filtrira prije grupiranja, ORDER BY daje determinističan redoslijed, a LIMIT ograničava broj rezultata.

Kod straničenja dodajte stabilan sekundarni redoslijed, primjerice id, kako zapisi s istim datumom ne bi mijenjali mjesto između zahtjeva.

Popis objavljenih članaka
SELECT id, title, published_at
FROM articles
WHERE status = 'published'
  AND published_at <= CURRENT_TIMESTAMP
ORDER BY published_at DESC, id DESC
LIMIT 20 OFFSET 0;

Namjerna mutacija

INSERT, UPDATE i DELETE

INSERT stvara redak, UPDATE mijenja postojeće, a DELETE briše. UPDATE ili DELETE bez WHERE može zahvatiti cijelu tablicu. Prije složene promjene napišite ekvivalentni SELECT s istim WHERE uvjetom i pregledajte ciljane retke.

Stvaranje i kontrolirana objava
INSERT INTO articles (author_id, title, body, status)
VALUES (17, 'Moderni PHP', 'Sadržaj...', 'draft');

UPDATE articles
SET status = 'published', published_at = CURRENT_TIMESTAMP
WHERE id = 42 AND status = 'review';

Više tablica, jedna cjelina

JOIN povezuje, transakcija štiti

JOIN povezuje retke preko ključeva. INNER JOIN vraća samo podudaranja, LEFT JOIN zadržava sve retke lijeve tablice. Transakcija grupira više promjena: COMMIT ih potvrđuje, ROLLBACK poništava ako korak ne uspije.

Atomski prijenos
START TRANSACTION;

UPDATE accounts SET balance_cents = balance_cents - 5000 WHERE id = 1;
UPDATE accounts SET balance_cents = balance_cents + 5000 WHERE id = 2;

COMMIT;

Primijenite naučeno

Vježba: Upiti baze znanja

Na modelu iz prethodnog poglavlja napišite osnovne upite.

  1. Dohvatite 10 najnovijih objavljenih članaka s imenom autora.
  2. Dodajte skicu članka.
  3. Objavite članak samo ako je trenutačno na provjeri.

Za provjeru i nastavak

Službeni izvori