Rekord hozzáadása MySQL adatbázis táblájához PHP nyelvben (MySQLi objektumorientált, PDO és MySQLi procedurális módszerrel)
Egy korábbi leckében már foglalkoztunk a MySQL adatbázis-műveletekkel PHP-ban, de ebben a cikkben sokkal részletesebben kifejtjük egyes adatbázis-műveletek megvalósítását. Az előző PHP leckében csak az objektumorientált módszert mutattuk be az egyes MySQL adatbázis műveletek megvalósításához, de ebben a cikkben mutatunk példát a procedurális és PDO módszerre is.
Ebben a cikkben már nem ismertetjük az adatbázis és a MySQL fogalmát, ha ezekről is szeretnél többet tudni, akkor olvasd el a korábbi PHP-MySQL leckénket.
Az előző leckében létrehoztunk egy táblát az adatbázisunkban, ebben pedig megmutatjuk, hogy hogyan tudtok egy újabb sort, azaz rekordot hozzáadni a MySQL adatbázisod táblájához.
Mi az a MySQLi?
A MySQLi a PHP5-tel megjelenő modul, amely felületet biztosít az adatbázisszerverekkel végzett műveletek végrehajtásának. Lehetővé teszi a procedurális és az objektumorientált megvalósítást is. Ezt a modul a PHP telepítésekor általában automatikusan települ a számítógépekre. (Ha valakinek mégsem történt volna meg, akkor itt letöltheti és telepítheti.)
A MySQLi bővítmény előnyei:
- támogatja az objektumorientált programozást
- támogatja a procedurális programozást
- támogatja az előkészített utasításokat
- támogatja a nyomkövetést és hibakeresést
Mi az a PDO?
A PDO a PHP Data Objects angol szónak a rövidítése, jelentése körülbelül PHP Adatobjektumok. A PDO egy olyan objektum, amelynek célja az adatbázis kapcsolatok és lekérdezések egyszerűbb kezelhetősége. A PDO több különböző adatbázis rendszerrel képes működni, így az igazi előnye, akkor jön elő, amikor szeretnénk lecserélni egy már létező adatbázisszerverünk egy más típusúra. A PDO használatával csak apróbb módosításokat kell tennünk a kódban.
A PDO által kínált lehetőségek:
- támogatja az objektumorientált programozást
- támogatja az előkészített utasításokat
- védelmi funkciókat biztosít
Mi az az objektumorientált programozás?
Az objektumorientált programozás (angolul object-oriented programming, röviden OOP) egy az objektumokra alapozott programozási elmélet vagy szemlélet. Az objektumok egységbe foglalják az adatokat és a velük kapcsolatos műveleteket. Az adatokat tulajdonságoknak, míg a műveleteket függvényeknek, illetve metódusoknak szoktuk nevezni. Az objektum az objektumorientált programozás egyik alapeleme.
Mi az a procedurális programozás?
A procedurális programozás (vagy eljárás orientált programozás) egy programozási alapelv, melynek alapja a modularitás és a hatókör. A procedurális programozás során azt az alapelvet követjük, hogy a konkrét programozási feladatot több kisebb egységre, avagy eljárásra bontsuk. Ezek az eljárások a kódban jól körülhatárolt egységek (függvény, metódus), melyeknek vannak elnevezéseik, jellemzőik és akár visszatérési értékeik is. A program futása során a főprogramban ezek az elkészített eljárások kerülnek meghívásra.
Ú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 ezt.
Van pár szabály, amelyet be kell tartanunk, hogy az SQL kódunk szintaktikailag helyes legyen:
- a lekérdezést idézőjelek közé kell írnunk
- 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 figyelembe vennünk, hogy a kódunk PHP-ban is megfelelően működjön..
Így néz ki egy szintaktikailag helyes SQL lekérdezés, amely egy új rekordot 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 olyan táblanevet és mezőneveket kell megadnunk, amelyek az adatbázisban már léteznek!
Új sor (rekord) hozzáadása táblához MySQL adatbázisban objektumorientált módszerrel (INSERT) szintaxis
KAPCSOLAT->query(SQL.KÓD);
Code language: CSS (css)
Jegyezzük meg, hogy bármilyen SQL utasítást (új rekord felvitele, törlése, frissítése) szeretnénk végrehajtani objektumorientáltan, mindig a használni kívánt kapcsolatunkra kell kiadni a „query()” utasítást az SQL kódunkkal.
Példa új sor (rekord) hozzáadására táblához MySQL adatbázisban objektumorientált megvalósítással PHP nyelv alatt
PHP kód
<?php
// adatok felvétele a kapcsolathoz
$servername = "localhost";
$username = "felhasznalo";
$password = "jelszo";
$dbname = "adatbazis";
$conn = new mysqli($servername, $username, $password, $dbname); // kapcsolat létrehozása
// kapcsolódás ellenőrzése
if ($conn->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ását megvalósító SQL kód
$sql = "INSERT INTO programnyelvek (nev, megjelenesi_ev) VALUES ('PHP', '1995-06-08')";
// új rekord hozzáadásának végrehajtása és ellenő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)
A fent megírt SQL lekérdezésben a „programnyelvek” táblába a „nev” és „megjelenesi_ev” oszlopokba a „PHP” és az „1995-06-08” értékeket vesszük fel. Ezzel kreálunk egy új rekordot.
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. Legfőképp arra kellett figyelnünk, hogy a szöveget és a dátumot aposztrófok közé tegyük. Majd végül egyszerre futtattuk (query) és ellenőriztük le, hogy a hozzáadás sikeres volt-e vagy sem.
Új sor (rekord) hozzáadása táblához MySQL adatbázisban procedurális megvalósítással (INSERT) szintaxis
Az objektumorientált verzió után nézzük meg a procedurális megvalósítást.
mysqli_query(KAPCSOLAT, SQL.UTASÍTÁS);
Code language: CSS (css)
Jegyezzük meg, hogy bármilyen SQL utasítást (új rekord felvitele, törlése, frissítése) szeretnénk végrehajtani procedurálisan, mindig a „mysqli_query” függvénnyel tehetjük meg, melynek az első paramétere a kapcsolat, míg a második maga az SQL utasítás.
Példa új sor (rekord) hozzáadására táblához MySQL adatbázisban procedurális megvalósítással PHP nyelv alatt
PHP kód
<?php
// adatok felvétele a kapcsolathoz
$servername = "localhost";
$username = "felhasznalo";
$password = "jelszo";
$dbname = "adatbazis";
$conn = mysqli_connect($servername, $username, $password, $dbname); // kapcsolat létrehozása
// kapcsolódás ellenőrzése
if ($conn) {
echo "Sikeres kapcsolódás."; // sikeres kapcsolódás
} else {
die("Sikertelen kapcsolódás: " . $mysqli_connect_error()); // sikertelen kapcsolódás
}
// új sor hozzáadását megvalósító SQL kód
$sql = "INSERT INTO programnyelvek (nev, megjelenesi_ev) VALUES ('PHP', '1995-06-08')";
// SQL kód futtatása és vizsgálata
if (mysqli_query($conn, $sql)) { // SQL kód futtatása és sikerességének ellenőrzése
echo "Új rekord sikeresen hozzáadva.";
} else {
echo "Új sor hozzáadása során hiba lépett fel: " . mysqli_error($conn);
}
mysqli_close($conn); // kapcsolat lezárása
?>
Code language: PHP (php)
Az „$sql” változóba kiszerveztük az új rekord felvételét megvalósító SQL kódot, mely a „programnyelvek” táblába a „nev” és „megjelenesi_ev” oszlopokba a „PHP” és az „1995-06-08” értékeket veszi fel. Ezzel kreálunk egy új rekordot. Majd az „if” elágazás feltételeként futtattuk a kódot az adatbázisba, ilyenkor egyből visszajelzést kapunk, amelyet egyúttal meg is vizsgálunk. Ha a lekérdezés sikeresen lefutott, akkor kiírjuk, hogy sikerrel jártunk. Ellenkező esetben pedig azt, hogy mi volt a hiba oka.
Új sor (rekord) hozzáadása táblához MySQL adatbázisban PDO segítségével (INSERT) szintaktika
Az objektumorientált és procedurális megoldás után nézzük meg a PDO-s megvalósítást.
KAPCSOLAT->exec(SQL.KÓD);
Code language: CSS (css)
Jegyezzük meg, hogy bármilyen SQL utasítást (új rekord felvitele, törlése, frissítése) szeretnénk végrehajtani PDO-s kapcsolat során, mindig az „exec” függvényt kell meghívnunk a kapcsolatra vonatkozóan, melynek egy paramétere van, az SQL utasítás.
Példa új sor (rekord) hozzáadására táblához MySQL adatbázisban PDO-s megvalósítással PHP nyelv alatt
PHP kód
<?php
// adatok felvétele a kapcsolathoz
$servername = "localhost";
$username = "felhasznalo";
$password = "jelszo";
$dbname = "adatbazis"
// megpróbáljuk végrehajtani az adatbázisműveleteket, ha nem sikerül, akkor elkapjuk a hibát a "catch"-ben
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); // PDO kapcsolat létrehozása
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // hibakezelés beállítása
// új sor hozzáadását megvalósító SQL kód
$sql = "INSERT INTO programnyelvek (nev, megjelenesi_ev) VALUES ('PHP', '1995-06-08')";
$conn->exec($sql); // itt hajtjuk végre az SQL utasítást, amely egy új rekordot hoz létre
echo "Sikeres művelet.";
} catch (PDOException $e) {
echo "Sikertelen művelet.: " . $e->getMessage();
}
$conn = null; // kapcsolat lezárása
?>
Code language: PHP (php)
Csakúgy, mint eddig egy „$sql” változóba felvesszük az új rekordot létrehozó SQL utasítást, mely a „programnyelvek” táblába a „nev” és „megjelenesi_ev” oszlopokba a „PHP” és az „1995-06-08” értékeket veszi fel. Ezzel kreálunk egy új rekordot. Majd a „$conn->exec($sql)” segítségével a „$conn” változóba kiszervezett kapcsolaton futtatjuk a „$sql” változóba szervezett kódot.