Az adatbázis-üzemeltetés racionalizálása: A MySQL tárolt projekthívások egyszerűsítése PHP-ben


Webfejlesztőként bizonyára találkozott már olyan forgatókönyvvel, amikor olyan összetett SQL-lekérdezéseket kellett végrehajtania, amelyek befejezéséhez több lépés szükséges. Itt jönnek jól a tárolt eljárások. A tárolt eljárások előre megírt SQL-kódok, amelyeket egyetlen függvény meghívásával lehet végrehajtani a PHP-kódból. Ebben a cikkben megnézzük, hogyan hívhatunk meg egy tárolt eljárást PHP-ből a MySQL-ben.

Először is hozzunk létre egy egyszerű tárolt eljárást a MySQL-ben. Ebben a példában egy olyan eljárást hozunk létre, amely visszaadja az adatbázisban lévő ügyfelek teljes számát.

„„

CREATE PROCEDURE getTotalCustomers()

BEGIN

SELECT COUNT(*) AS total_customers FROM customers;

END

„„

Most, hogy létrehoztuk a tárolt eljárásunkat, meg tudjuk hívni a PHP-ból. Íme egy példakódrészlet, amely bemutatja, hogyan hívjuk meg a `getTotalCustomers` tárolt eljárást.

„„

<?php

// Adatbázis hitelesítő adatok

= „localhost”;

= „root”;

= „”;

= „mydatabase”;

// Adatbázis kapcsolat létrehozása

= mysqli_connect(, , , );

// A kapcsolat sikerességének ellenőrzése

if (!) {

die(„Connection failed: ” . mysqli_connect_error());

}

// Tárolt eljárás hívása

= „CALL getTotalCustomers()”;

= mysqli_query(, );

// Ellenőrizzük, hogy a lekérdezés sikeres volt-e

if (!) {

die(„Hiba a tárolt eljárás végrehajtásában: ” . mysqli_error());

}

// Eredmény lekérdezése

= mysqli_fetch_assoc();

// Eredmény kiírása

echo „Összes ügyfél: ” . [‘total_customers’];

// Adatbázis kapcsolat lezárása

mysqli_close();

?>

„`

Ebben a kódrészletben először kapcsolatot hozunk létre a MySQL adatbázisunkkal. Ezután meghívjuk a `getTotalCustomers` tárolt eljárást a `mysqli_query` függvény segítségével. Ha a lekérdezés sikeres volt, akkor a `mysqli_fetch_assoc` függvény segítségével lekérdezzük az eredményt, és kiírjuk a képernyőre.

Fontos megjegyezni, hogy a tárolt eljárások paramétereket is elfogadhatnak. Íme egy példa tárolt eljárásra, amely elfogad egy paramétert:

„„

CREATE PROCEDURE getCustomerById(IN customerId INT)

BEGIN

SELECT * FROM customers WHERE id = customerId;

END

„„

A tárolt eljárás PHP-ból történő hívásához át kell adnunk a `customerId` paramétert. Íme egy példakódrészlet, amely bemutatja, hogyan hívhatjuk meg ezt a tárolt eljárást:

„„

<?php

// Adatbázis hitelesítő adatok

= „localhost”;

= „root”;

= „”;

= „mydatabase”;

// Adatbázis kapcsolat létrehozása

= mysqli_connect(, , , );

// A kapcsolat sikerességének ellenőrzése

if (!) {

die(„Connection failed: ” . mysqli_connect_error());

}

// Tárolt eljárás hívása paraméterrel

= „CALL getCustomerById(1)”;

= mysqli_query(, );

// Ellenőrizzük, hogy a lekérdezés sikeres volt-e

if (!) {

die(„Hiba a tárolt eljárás végrehajtásában: ” . mysqli_error());

}

// Eredmény lekérdezése

= mysqli_fetch_assoc();

// Eredmény kiírása

echo „Ügyfél neve: ” . [‘név’];

// Adatbázis-kapcsolat lezárása

mysqli_close();

?>

„`

Ebben a kódrészletben a `getCustomerById` tárolt eljárást hívjuk meg az `1` paraméterértékkel. Ezután lekérdezzük az eredményt, és kiírjuk az ügyfél nevét a képernyőre.

Összefoglalva, a tárolt eljárások nagymértékben leegyszerűsíthetik az adatbázis-műveleteket, mivel lehetővé teszik, hogy összetett SQL-lekérdezéseket hajtsunk végre egyetlen függvényhívással. Az ebben a cikkben bemutatott példák segítségével most már képesnek kell lennie arra, hogy tárolt eljárásokat hívjon a PHP-ból a MySQL-ben.

FAQ
Hogyan lehet tárolt eljárást hívni a MySQL-ben?

Egy tárolt eljárás meghívásához a MySQL-ben a CALL utasítást használhatja, amelyet a tárolt eljárás neve és az esetlegesen átadandó paraméterek követnek. Íme egy példa:

„„

CALL my_stored_procedure(‘parameter_value’);

„„

Ebben a példában a `my_stored_procedure` a tárolt eljárás neve, a `’parameter_value’` pedig egy példa az esetlegesen átadandó paraméterre.

Ha a tárolt eljárás eredményhalmazt ad vissza, akkor SELECT utasítással lekérdezheti az eredményeket. Íme egy példa:

„„

SELECT * FROM my_stored_procedure(‘parameter_value’);

„„

Ebben a példában a `my_stored_procedure` a tárolt eljárás neve, a `’parameter_value’` pedig egy példa az esetlegesen átadandó paraméterre.

Fontos megjegyezni, hogy a tárolt eljárást hívó felhasználónak rendelkeznie kell a szükséges jogosultságokkal. A jogosultságokat a GRANT utasítással adhatja meg. Íme egy példa:

„„

GRANT EXECUTE ON my_stored_procedure TO my_user;

„„

Ebben a példában a `my_stored_procedure` a tárolt eljárás neve, a `my_user` pedig annak a felhasználónak a neve, akinek engedélyre van szüksége a híváshoz. Az `EXECUTE` engedély lehetővé teszi a felhasználó számára a tárolt eljárás végrehajtását.

Hogyan hívhatunk meg egy tárolt eljárást a PHP PDO-ban?

Egy tárolt eljárás meghívásához a PHP PDO-ban a következő lépéseket követheti:

1. Hozzon létre egy PDO objektumot, és hozzon létre kapcsolatot az adatbázishoz a megfelelő hitelesítő adatokkal.

2. Készítsen egy SQL utasítást, amely a `CALL` parancs segítségével hívja meg a tárolt eljárást. Az utasításnak tartalmaznia kell a tárolt eljárás nevét és az átadandó bemeneti vagy kimeneti paramétereket.

3. A `bindParam()` vagy `bindValue()` metódus segítségével kössük a bemeneti paramétereket az előkészített utasítás megfelelő helyőrzőihez.

4. Végezzük el az előkészített utasítást az `execute()` metódus segítségével.

5. Ha a tárolt eljárás kimeneti értékeket ad vissza, akkor azokat a megfelelő lekérdezési módszerrel, például a `fetch()`, `fetchColumn()` vagy `fetchAll()` módszerrel kérje le.

Íme egy példakódrészlet, amely bemutatja, hogyan hívhatunk meg egy tárolt eljárást a PHP PDO segítségével:

„`

<?php

// PDO objektum létrehozása és kapcsolat létrehozása az adatbázishoz

= new PDO(‘mysql:host=localhost;dbname=mydb’, ‘username’, ‘password’);

// A tárolt eljárást hívó SQL utasítás előkészítése

= ->prepare(„CALL my_stored_proc(:input_param, @output_param)”);

// A bemeneti paraméter kötése a helyőrzőhöz

= ‘some value’;

->bindParam(‘:input_param”, , PDO::PARAM_STR);

// Az előkészített utasítás végrehajtása

->execute();

// A kimeneti érték(ek) kinyerése a tárolt eljárásból

= ->query(„SELECT @output_param”)->fetch(PDO::FETCH_ASSOC);

print_r();

// Az adatbázis kapcsolat lezárása

= null;

?>

„`

Ebben a példában a `my_stored_proc` tárolt eljárás egy bemeneti paramétert fogad és egy kimeneti paramétert ad vissza. A bemeneti paramétert a `bindParam()` segítségével kötjük a helyőrzőjéhez, a kimeneti paramétert pedig a tárolt eljárás végrehajtása után egy külön `query()` hívással egy MySQL felhasználói változóból nyerjük ki. A kimeneti paraméter értékének megjelenítésére a `print_r()` függvényt használjuk. Végül az adatbázis-kapcsolat lezárása a `null` hozzárendeléssel történik.