hu en sv en hu it hu en hu de hu ja hu hu hu hu hu hu hu hu de hu hu hu hu hu hu hu hu en hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu cs hu hu hu hu hu hu en hu hu cs hu hu hu hu hu hu hu hu hu hu cs hu hu hu hu hu hu hu hu hu hu hu hu hu cs hu hu hu hu hu hu hu hu hu es es hu en de en sv en en fr en en hu en hu es de en en hu cs hu hu hu hu hu hu hu hu hu hu hu hu cs hu hu hu hu hu en hu hu cs hu hu hu hu hu es es es tr en hu hu hu hu hu hu hu hu hu fr hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu en hu it hu en hu de hu ja hu hu hu hu hu es es es tr en hu
MySQL adatbázis-műveletek a PHP-ban (adatbázis-kapcsolat létrehozása, bezárása, tábla létrehozása, rekord hozzáadása, törlése, módosítása, lekérdezések írása) - WEBiskola
Weboldalszerkesztő (HTML, CSS, JS kódszerkesztő) HTML-színkód generátor (Hexadecimális, RGB, HSL színkód kereső)
Ebben a cikkben a PHP nyelven történő MySQL adatbázis műveleteket fogjuk bemutatni objektumorientáltan. Először ismertetjük az adatbázis fogalmát, majd a MySQL-ét, majd áttérünk a PHP-ban történő adatbázis műveletekre, például az adatbázis-kapcsolat létrehozásra, bezárásra, tábla létrehozásra, rekord hozzáadásra, törlésre, módosításra és a lekérdezések írására.
Szakmailag megfogalmazva azt mondhatjuk, hogy az adatbázis azonos jellemzőjű, strukturált adatok összessége, amelyet egy az adatok tárolására, lekérdezésére és szerkesztésére alkalmas szoftvereszköz kezel. Az adatbázisok segítségével az adatokat megbízhatóan, hosszú távon tartósan (perzisztensen) tárolhatjuk. Illetve az adatbázis gyors visszakereshetőséget biztosít az adatok között. Az adatbázis működtetésére, a benne tárolt adatok kezelésére adatbáziskezelőt használunk.
Kicsit egyszerűbben fogalmazva elmondhatjuk, hogy egy adatbázisban adatokat tárolunk, melyeket lekérdezhetünk, manipulálhatunk. Rengeteg különböző helyzetben használhatunk adatbázisokat, hogy adataink strukturáltak és könnyen lekérdezhetőek legyenek. Egy adatbázis lekérdezéssel másodpercek alatt megtudjuk mondani, hogy hány vásárlónk volt egy adott hónapban. Ezeket az adatokat listázhatjuk akár kosárérték alapján is.
Egy weboldal esetében általában felhasználókhoz köthető adatokat szoktunk adatbázisokban tárolni, például az email címüket, jelszavaikat, feltöltött tartalmaikat vagy például a fent említett esetben a rendeléseik részleteit.
Mi az a MySQL és MySQLi?
Ahhoz, hogy adatbázist készíthessünk vagy műveleteket végezhessünk rajta, szükségünk van egy adatbázis-kezelő rendszerre. A MySQL az egyik legjobban elterjedt adatbázis-kezelő.
Az adatbázisok kezeléséhez elengedhetetlen egy adatbázis-kezelő telepítése, például a fent említett MySQL. A MySQL letölthető a hivatalos weboldalról vagy a XAMPP szoftvercsomag részeként.
A MySQLi a MySQL egy továbbfejlesztett változata, amelyet a PHP programozás során használni fogunk. Linuxon és Windows-on az esetek döntő többségében automatikusan feltelepül a PHP-val együtt, de akinek mégis hiányozna, az innen letöltheti.
Legelőször kezdjük az adatbázis kapcsolódással. Ha elkészítettük az adatbázist, akkor a PHP-ban mielőtt nekilátnánk lekérdezéseket írni vagy adatokat hozzáadni PHP-ból, előtte mindenképp csatlakoznunk kell az adatbázishoz. Az adatbázisunknak minden esetben lennie kell egy szervercímének, egy felhasználónevének és egy jelszavának.
new mysqli(SZERVERCÍM, FELHASZNÁLÓNÉV, JELSZÓ, ADATBÁZISNÉV) Code language: PHP (php)
A kapcsolódás valójában ebből az egyetlen egy sorból áll, de a lenti példából látni fogjátok, hogy érdemes még pár sorral kiegészíteni, hogy a kódunk átláthatóbb, könnyebben módosítható és minden igényt kielégítő legyen.
Példa MySQL kapcsolódáshoz PHP nyelv alatt:
A fenti példában láthatjuk, hogy a legelején felvesszük az adatbázis kapcsolódáshoz szükséges adatokat (szervercím, felhasználónév, jelszó, adatbázis) különböző változókba, melyeket egy sorral lentebb behelyettesítünk a mysqli kapcsolatlétesítési függvénybe. Mindezt elmentjük egy változóba, hogy pár sorral lejjebb letudjuk ellenőrizni, hogy a kapcsolódás sikeres volt-e vagy sem.
Érdemes most megemlíteni, hogy az adatbázis műveleteknek PHP-ban nincs szemmel látható eredménye, hiszen az összes művelet az adatbázisban fut le. Szemmel látható eredménye, maximum akkor van, ha kiíratjuk például egy lekérdezés eredményét.
MySQL adatbáziskapcsolat lezárása PHP-ban (close)
Ha megnyitunk egy adatbázis kapcsolatot, akkor azt be is kell zárnunk. A kapcsolat automatikusan bezárul, ha a szkript futása véget ér, de szerencsére lehetőségünk van arra is, hogy idő előtt bezárjuk a kapcsolatot.
Nemes egyszerűséggel a létrehozott kapcsolatra ki kell adnunk a close() utasítást.
Példa MySQL adatbáziskapcsolat lezárására PHP nyelv alatt:
connect_error) { die("Sikertelen kapcsolódás: " . $conn->connect_error); // sikertelen kapcsolódás } else { echo "Sikeres kapcsolódás."; // sikeres kapcsolódás } // kapcsolat lezárása $conn->close(); ?> Code language: PHP (php)
Tábla létrehozása MySQL adatbázisban (create)
Ebben a leckében nem az a cél, hogy megértessük, hogy pontosan mi is az és hogy hogyan működnek az adatbázisok, azaz nem magyarázunk el minden egyes adatbázisos fogalmat, hiszen ez egy PHP lecke. De röviden az adatbázisban található táblákban tároljuk a logikailag összefüggő adatokat. A tábla oszlopokból és sorokból áll, melyeket mezőknek, illetve rekordoknak nevezünk. Például egy webshop mögött lévő adatbázis esetében lenne egy külön táblánk a felhasználói adatok számára, például a felhasználónév, az email cím és a jelszó számára.
A tábla létrehozásához ismernünk kell a MySQL-ben használatos szintaktikát a táblák létrehozására.
MySQL-ben így néz ki egy tábla létrehozásának a szintaxisa:
CREATE TABLE TÁBLANÉV ( MEZŐ1 ADATTÍPUS OPCIONÁLIS.TULAJDONSÁG, MEZŐ2 ADATTÍPUS OPCIONÁLIS.TULAJDONSÁG, MEZŐ3 ADATTÍPUS OPCIONÁLIS.TULAJDONSÁG ... ); Code language: SQL (Structured Query Language) (sql)
Először is a “CREATE TABLE” kulcsszó után meg kell adnunk, hogy milyen névvel szeretnénk a táblára hivatkozni, majd egy sima nyitózárójel után elkezdjük felsorolni a mezőket (oszlopokat). Először jön a mező neve, majd az adattípusa. Ha szeretnénk akkor opcionálisan különböző tulajdonságokat is odabiggyeszthetünk, például, hogy az adott mező nem lehet NULL, vagy hogy automatikusan növekvő értéket kapjon.
query(SQL.KÓD) Code language: PHP (php)
Példa tábla létrehozására MySQL adatbázisban PHP nyelv alatt:
connect_error) { die("Sikertelen kapcsolódás: " . $conn->connect_error); // sikertelen kapcsolódás } else { echo "Sikeres kapcsolódás."; // sikeres a kapcsolódás } // SQL kód tábla létrehozáshoz $sql = "CREATE TABLE programnyelvek ( id INT(5) AUTO_INCREMENT PRIMARY KEY, nev VARCHAR(30) NOT NULL, megjelenesi_ev DATE )"; // létrehozás sikerességének leellenőrzése if ($conn->query($sql) === false) { echo "Hiba a tábla létrehozása során: " . $conn->error; } else { echo "Sikeres a tábla létrehozása."; } // kapcsolat lezárása $conn->close(); ?> Code language: PHP (php)
Ebben a példában készítettünk egy SQL kódot, amelyet az “$sql” változóban mentettünk el. Ez az SQL kód a tábla létrehozását valósítja meg. A tábla neve “programnyelvek”, melynek három mezője van, az első egy id, amelynek értéke automatikusan fog növekedni, történetesen ez az elsődleges kulcs is. A név egy szöveges mező, melynek értéke nem lehet NULL. A legutolsó mező pedig a megjelenési év, melynek típusa dátum.
Új sor (rekord) hozzáadása táblához MySQL adatbázisban (insert)
Most, hogy már van adatbázisunk és táblánk is, amihez hozzáadhatunk adatokat, épp itt az ideje, hogy meg is tegyük.
Van pár szabály, amelyet be kell tartanunk az SQL kód megírása során:
a lekérdezésnek idézőjelek között kell lennie
a szövegeket és a dátumtípusú értékeket aposztróf közé kell helyeznünk
a számokat és a NULL értéket nem kell sem idézőjelek, sem aposztrófok közé tenni
Továbbá természetesen itt is figyelembe kell vennünk az SQL szintaxis szabályait. Azaz elsősorban egy olyan lekérdezést kell írnunk, amely MySQL-ben is lefut, aztán kell a fent említett módosításokat is megejtenünk.
Így néz ki egy szintaktikailag helyes SQL lekérdezés, amely egy új sort hoz létre:
INSERT INTO TÁBLANÉV (MEZŐ1, MEZŐ2, MEZŐ3 ...) VALUES (ÉRTÉK1, ÉRTÉK2, ÉRTÉK3 ...) Code language: SQL (Structured Query Language) (sql)
Természetesen az adatbázisban létező táblanevet és mezőneveket kell megadnunk!
Példa új sor (rekord) hozzáadására táblához MySQL adatbázisban PHP nyelv alatt:
connect_error) { die("Sikertelen kapcsolódás: " . $conn->connect_error); // sikertelen kapcsolódás } else { echo "Sikeres kapcsolódás."; // sikeres a kapcsolódás } // új sor hozzáadása $sql = "INSERT INTO programnyelvek (nev, megjelenesi_ev) VALUES ('PHP', '1995-06-08')"; // új rekord hozzáadásának leellenőrzése if ($conn->query($sql) === false) { echo "A rekord hozzáadása nem sikerült: " . $conn->error; } else { echo "Sikeres rekordhozzáadás"; } // kapcsolat lezárása $conn->close(); ?> Code language: PHP (php)
Ebben a példában a létrehozott SQL lekérdezést úgy írtuk meg, hogy figyelembe vettük az összes fenti utasítást. Kiváltképp arra kellett figyelnünk, hogy a szöveget és a dátumot aposztrófok közé tegyük. Majd végül leellenőriztük, hogy a hozzáadás sikeres volt-e vagy sem.
Lekérdezés MySQL adatbázisban (select)
Miután a táblánkban már vannak adatok is, lehetőségünk van arra, hogy különböző lekérdezéseket írjunk. Ezekkel a lekérdezésekkel például kilistázhatjuk az összes programnyelvet, amelyet felvittünk az adatbázisba, de akár azt is megtehetjük, hogy csak a 2000-nél régebbi programnyelveket kérdezzük le.
SELECT mező(k).neve(i) FROM táblanév Code language: SQL (Structured Query Language) (sql)
A mezők neveihez azokat a neveket kell írnunk, amelyek a táblában léteznek és szeretnénk, hogy eredményként megjelennének. Például, ha írunk egy ilyen lekérdezést:
SELECT id, nev, megjelenesi_ev FROM programnyelvek Code language: SQL (Structured Query Language) (sql)
Akkor ez lesz az eredménye:
Az “id, nev, megjelenesi_ev” helyett írhattam volna csillagot (“*”) is, hiszen ezzel kilistázzuk az összes oszlopot. Ha csak a nevüket szerettem volna kilistázni, akkor így kellett volna írnom:
SELECT nev FROM programnyelvek Code language: SQL (Structured Query Language) (sql)
Melynek ez lesz az eredménye:
Példa lekérdezés írására MySQL adatbázisban PHP nyelv alatt:
connect_error) { die("Sikertelen kapcsolódás: " . $conn->connect_error); // sikertelen kapcsolódás } else { echo "Sikeres kapcsolódás."; // sikeres a kapcsolódás } // lekérdezés $sql = "SELECT id, nev FROM programnyelvek"; $result = $conn->query($sql); // eredmény kiíratása if ($result->num_rows > 0) { // ha a lekérdezésnek van eredménye, akkor belépünk az if-be while($row = $result->fetch_assoc()) { // amíg van rekord, addig kiírom őket echo "id: " . $row["id"]. ", név: " . $row["nev"]. " "; } } else { echo "A lekérdezésnek nincs eredménye."; // nincs eredmény } // kapcsolat lezárása $conn->close(); ?> Code language: PHP (php)
id: 1, név: PHP
id: 2, név: JavaScript
id: 3, név: Java
A fenti kódban megírtuk a lekérdezésünket, amely szerint az “id” és a “nev” mezőket szeretnénk lekérdezni. A lekérdezés eredményét eltároljuk a “$result” változóban. Majd következik az eredmény kiíratása. Először megvizsgáljuk, hogy a sorok száma nagyobb-e, mint nulla, mivel ha nem nagyobb, akkor nincs mit kiíratnunk, így fölösleges belépnünk a kiíratáshoz. Ha nagyobb, akkor a lekérdezésünk eredménnyel tért vissza, készítünk egy while ciklust, amely addig megy, amíg a “$row” nem tér vissza null értékkel. Akkor fog null értékkel visszatérni, amikor már nincs több sor. A while ciklus magjában egyszerűen kiíratjuk az id-t és a nevet.
Rekord módosítása MySQL adatbázisban (update)
Nem csak arra van lehetőségünk, hogy adatokat vigyünk fel a táblába, hanem arra is, hogy egy már meglévő rekord értékeit módosítsuk.
SQL szintaxis rekord módosítására:
UPDATE táblanév SET mező1=érték1, mező2=érték2 ... WHERE feltétel Code language: SQL (Structured Query Language) (sql)
Fontos, hogy olyan feltételt írjunk, amely csak a módosítandó rekord(ok)ra érvényes, mert ha a feltételünk nem helyes, akkor olyan rekord(ok) is módosulni fog(nak), amely(ek)nek nem kellene.
Példa rekord módosításra MySQL adatbázisban PHP nyelv alatt:
connect_error) { die("Sikertelen kapcsolódás: " . $conn->connect_error); // sikertelen kapcsolódás } else { echo "Sikeres kapcsolódás."; // sikeres a kapcsolódás } // rekordmódosító SQL kód $sql = "UPDATE programnyelvek SET nev='Python', megjelenesi_ev='1991-02-20' WHERE nev='Java'"; // rekord módosításának ellenőrzése if ($conn->query($sql) === false) { echo "A rekord módosítása nem sikerült: " . $conn->error; } else { echo "Sikeres rekordmódosítás."; } // kapcsolat lezárása $conn->close(); ?> Code language: PHP (php)
A fenti kódban megírtuk, hogy a “programnyelvek” adatbázisban módosuljon “Python”-ra a “nev” mező/oszlop és ‘1991-02-20’-ra a “megjelenesi_ev” mező/oszlop, ott ahol a “nev=’Java'”. Ezzel azt értük el, hogy a módosítás csak ott történik meg, ahol a név a Java. Majd futtattuk az utasítást és leteszteltük, hogy helyesen futott-e le vagy sem.
Rekord törlése MySQL adatbázisban (delete)
Fentebb taglaltuk egy rekord módosításának a módszerét, ám van olyan, amikor nem elég egy rekordot módosítanunk, hanem teljesen törölnünk kell. Szerencsére erre is van lehetőségünk a PHP-ban.
DELETE FROM táblanév WHERE feltétel Code language: SQL (Structured Query Language) (sql)
Természetesen itt is kínosan ügyelnünk kell arra, hogy tökéletes feltételt szabjunk, hogy csak olyan rekordok törlődjenek, amelyeket valóban törölni szeretnénk!
Példa rekord törlésére MySQL adatbázisban PHP nyelv alatt:
connect_error) { die("Sikertelen kapcsolódás: " . $conn->connect_error); // sikertelen kapcsolódás } else { echo "Sikeres kapcsolódás."; // sikeres a kapcsolódás } // rekordtörlő SQL kód $sql = "DELETE FROM programnyelvek WHERE nev='Python'"; // rekord törlésének ellenőrzése if ($conn->query($sql) === false) { echo "A rekord törlése nem sikerült: " . $conn->error; } else { echo "Sikeres rekordtörlés."; } // kapcsolat lezárása $conn->close(); ?> Code language: PHP (php)
A fenti példában semmit sem módosítottunk az előzőhöz képest, csak annyit, hogy átírtuk az SQL utasítást, mely szerint törli a programnyelvekből azt a rekordot, ahol a “nev” egyenlő “Python”-nal.
Ha hasznos volt számodra, akkor kérlek oszd meg másokkal is, hogy ezzel támogass minket!
Az adatbázis-kezelés alapjai (SQL alapok)
MySQL lekérdezés készítése PHP-ban (MySQLi objektumorientált, PDO és MySQLi procedurális módszerrel)
PHP alapok (PHP webprogramozás alapjai kezdőknek)
MySQL adatbáziskapcsolat lezárása PHP-ban (MySQLi objektumorientált, PDO és MySQLi procedurális módszerrel)
#adatbázis #adatbázis műveletek PHP-ban #MySQL #MySQLi #PHP #PHP ismeretek #PHP MySQL #PHP programozás #php tananyag #php tanfolyam #webfejlesztés #webprogramozás alapjai #webprogramozás alapok
Mi az a PHP? A PHP fogalma és bemutatása
PHP, Apache és XAMPP letöltése, telepítése
Hogyan és hova írjunk PHP kódot?
Komment, megjegyzés hozzáfűzése PHP kódhoz
PHP kiíratások, azaz echo és print + short open tag beállítása, használata
A legjobb PHP kódszerkesztő programok, IDE-k listája
PHP változók és konstansok fogalma, szintaxisa + példa létrehozásra, módosításra, lekérdezésre
Műveletek tömbökkel PHP-ban (Tömb létrehozása, elemek hozzáadása, felülírása, törlése, tömb hosszának megállapítása, elemeinek kiíratása)
Ciklusok a PHP-ban (for, while, do-while, foreach iterációk + break és continue használata)
Elágazások a PHP-ban (if és switch feltételes utasítás)
PHP alapok (PHP webprogramozás alapjai kezdőknek)
Operátorok a PHP-ban (Aritmetikai, értékadó, értéknövelő, értékcsökkentő, összehasonlító, logikai, feltételes értékadó, tömb- és szövegoperátorok)
Függvények a PHP-ban (Paraméteres és paraméter nélküli függvények létrehozása, meghívása, hivatkozás szerinti paraméterátadás, típusmegfeleltetés, alapértelmezett érték)
MySQL adatbázis-műveletek a PHP-ban (adatbázis-kapcsolat létrehozása, bezárása, tábla létrehozása, rekord hozzáadása, törlése, módosítása, lekérdezések írása)
Session, azaz munkamenetkezelés PHP-ban (Munkamenet indítása, session változók létrehozása, munkamenet megszűntetése)
Sütik kezelése PHP-ban (cookie létrehozása, módosítása, lekérdezése, törlése)
Űrlapkezelés a PHP-ban POST és GET metódus segítségével
SQL és XSS injekció elleni védelem PHP-ban (htmlspecialchars, real_escape_string és előkészített utasítások használata)
PHP titkosítás, avagy hogyan védjük a felhasználók adatait (password_hash() és password_verify() PHP függvények)
PHP include és require utasítások (+ include_once és require_once)
Fájlkezelés a PHP-ban (Fájl létrehozása, megnyitása, írása, törlése, lezárása)
PHP isset() függvény használata
PHP String függvények (Szöveg karaktereinek, szavainak megszámlálása, szöveg keresése, cseréje, nagy-, kisbetűssé alakítása, visszafele kiíratása)
PHP Math függvények (Matematikai függvények a PHP-ban) [abszolút érték, számrendszerek közötti váltás, szögfüggvények, radián és fok közötti átváltás, számok kerekítése, gyökvonás, logaritmus, pi]
Véletlenszerű (random) szám generálása PHP-ban (rand() és mt_rand() függvények használata)
Csatlakozás, kapcsolódás MySQL adatbázishoz PHP-ban (MySQLi objektumorientált, PDO és MySQLi procedurális módszerrel)
MySQL adatbáziskapcsolat lezárása PHP-ban (MySQLi objektumorientált, PDO és MySQLi procedurális módszerrel)
Tábla létrehozása MySQL adatbázisban PHP nyelv alatt (MySQLi objektumorientált, PDO és MySQLi procedurális megoldással)
Rekord hozzáadása MySQL adatbázis táblájához PHP nyelvben (MySQLi objektumorientált, PDO és MySQLi procedurális módszerrel)
Rekord módosítása MySQL adatbázis táblájában PHP nyelv alatt (MySQLi objektumorientált, PDO és MySQLi procedurális módszerrel)
Rekord törlése MySQL adatbázis táblából PHP nyelvben (MySQLi objektumorientált, PDO és MySQLi procedurális módszerrel)
MySQL lekérdezés készítése PHP-ban (MySQLi objektumorientált, PDO és MySQLi procedurális módszerrel)
A legjobb PHP keretrendszerek (13 PHP framework)