Tábla létrehozása MySQL adatbázisban PHP nyelv alatt (MySQLi objektumorientált, PDO és MySQLi procedurális megoldással)
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 MySQL kapcsolatot, ebben pedig megmutatjuk, hogy hogyan tudjátok lezárni a már létező, nyitott adatbáziskapcsolatot.
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 megvalósítást
- támogatja a procedurális interfészt
- támogatja az előkészített utasításokat
- támogatja a nyomkövetést
- támogatja a hibakeresést
Mi az a PDO?
A PDO a PHP Data Objects rövidítése. A PDO tulajdonképpen egy objektum az adatbázis kapcsolatok és lekérdezések egyszerűbb kezelésére. 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éd lecserélni az adatbázisszervered egy másikra. A PDO használatával csak apróbb módosításokat kell tennünk a kódban.
A PDO nyújtotta lehetőségek:
- támogatja az objektumorientált megvalósítást
- támogatja az előkészített utasításokat
- védelmi funkciók
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 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, metódusoknak nevezzük. Az objektum az objektumorientált programozás 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.
Tábla értelmezése az adatbázisban
Ebben a cikkben nem magyarázzuk el teljesen az adatbázisokhoz kapcsolódó fogalmakat, mert ez egy PHP lecke. Az adatbázissal kapcsolatos fogalmakról az adatbázis kurzusában olvashattok.
Az adatbázisban található táblákban tároljuk a logikailag összefüggő adatokat. A tábla oszlopokból és sorokból áll. (Az oszlopokat szoktuk mezőknek, illetve a sorokat rekordoknak nevezni.) 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 felhasználónév, az email cím és a jelszó mind külön oszlopok, azaz mezők lennének. Míg egy konkrét személy adatai lennének a sorok, azaz rekordok.
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: CSS (css)
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.
Alább bemutatjuk azt, hogy hogyan hozhattok létre táblákat egy adatbázisban PHP nyelv alatt objektumorientáltan, procedurálisan vagy PDO-val.
Tábla létrehozása MySQL adatbázisban PHP nyelv alatt objektumorientált módon (CREATE) szintaxis
Vegyük akkor először szemügyre az objektumorientált módszer szintaxisát, majd utána nézünk egy példát is rá.
KAPCSOLAT->query(SQL.UTASÍTÁS)
Code language: PHP (php)
A kapcsolatunkon futtatjuk a „query” segítségével azt az SQL lekérdezést, amelyet szeretnénk végrehajtani. Az SQL utasítást érdemes egy változóba kiszervezni és azt behelyettesíteni a „query”-be.
Tábla létrehozása MySQL adatbázisban objektumorientáltan 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 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 + itt futtatjuk az SQL kódot a query-vel
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)
Szegezzük a figyelmünket a 18. sorra és attól lefelé. Először is elkészítettük az SQL kódunkat, 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. Az ezután következő feltétel vizsgálat folyamán fut le a lekérdezés SQL-ben való végrehajtása, ennek eredményét kiírjuk a képernyőre.
Tábla létrehozása MySQL adatbázisban PHP nyelv alatt procedurális megoldással (CLOSE) szintaktika
Most pedig következzen a procedurális megvalósítás, mint ahogy már megszokhattátok, itt sem lesz túl nagy eltérés az objektumorientált megvalósításhoz képest.
mysqli_query(KAPCSOLAT, SQL.UTASÍTÁS)
Code language: PHP (php)
A „mysqli_query()” függvénynek két paramétere van, az első a kapcsolat, amelyen szeretnénk végrehajtani az utasítást, a második paraméter pedig maga az SQL utasítás.
Tábla létrehozása MySQL adatbázisban procedurálisan 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
}
// 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 + itt futtatjuk az SQL utasítást a mysqli_query-vel
if (mysqli_query($conn, $sql) === false) {
echo "Hiba a tábla létrehozása során: " . $conn->error;
} else {
echo "Sikeres a tábla létrehozása.";
}
mysqli_close($conn); // kapcsolat lezárása
?>
Code language: PHP (php)
Az előző példához képest annyi módosult, hogy itt a procedurális programozásnál használt utasítást írtuk be az if elágazásba. A kód SQL-be futtatása szintúgy a feltételvizsgálatkor fut le. Ahogy legutóbb úgy most is elkészítettük az SQL kódunkat, 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.
Tábla létrehozása MySQL adatbázisban PHP nyelv alatt PDO segítségével (CLOSE) szintaxis
Végezetül pedig nézzük meg, hogy hogyan változik az eddigi kód, ha PDO-val szeretnénk megvalósítani
KAPCSOLAT->exec(SQL.UTASÍTÁS)
Code language: PHP (php)
Ilyenkor is a kapcsolatra kell kiadnunk az utasítást, amely az exec() lesz. Paramétere maga az SQL utasítás. Ebben az esetben is érdemes magát az utasítást kiszerveznünk egy külső változóba, csakúgy, ahogy az alábbi példában mi is tesszük.
Tábla létrehozása MySQL adatbázisban PDO-val PHP nyelvben
PHP kód
<?php
// adatok felvétele a kapcsolathoz
$servername = "localhost";
$username = "felhasznalo";
$password = "jelszo";
$dbname = "adatbazis"
// megpróbálunk csatlakozni a "try"-ban, 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
// 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
)";
$conn->exec($sql); // itt hajtjuk végre az SQL utasítást, amely létrehozza a táblát
echo "Sikeres művelet.";
} catch (PDOException $e) {
echo "Sikertelen művelet.: " . $e->getMessage();
}
$conn = null; // kapcsolat lezárása
?>
Code language: PHP (php)
Utoljára még leírom az SQL kód magyarázatát, hátha valaki átugrotta az előző két megoldást: Az elkészített SQL kódunkat az “$sql” változóba mentettük 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.
Itt az SQL kód végrehajtása a 20. sorban történik meg.