[[oktatas:programozás:php:php adatbázis|< PHP adatbázis]] ====== MySQL PDO ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2019 * Licenc: GNU Free Documentation License 1.3 * Web: http://szit.hu ===== PDO ===== Hasonló a Perl nyelv DBI kommunikációs felülethez. A PDO használatának előnye, hogy ha más típusú adatbázist kell használni, nem sokat kell változtatni a kódon. ===== Kapcsolódás ===== setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Sikeres kapcsolat"; }catch(PDOException $e) { echo $e->getMessage(); } $conn = null; ===== Adatbázis létrehozása ===== setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "create database erdo"; $conn->exec($sql); echo "Sikeresen adatbázis létrehozás"; }catch(PDOException $e) { echo $e->getMessage(); } $conn = null; ===== Tábla létrehozása ===== setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "create table dolgozok ( az int primary key auto_increment, vnev varchar(30), knev varchar(30), telepules varchar(30), fizetes double )"; $conn->exec($sql); echo "Sikeresen tábla létrehozás"; }catch(PDOException $e) { echo $e->getMessage(); } $conn = null; ===== Beszúrás ===== exec($sql); echo "Sikeresen beszúrva"; }catch(PDOException $e) { echo $e->getMessage(); } $conn = null; ===== Azonosító lekérdezése ===== setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "insert into dolgozok (vnev, knev, telepules, fizetes) values ('Nagy', 'János', 'Szolnok', 1350000) "; $conn->exec($sql); $az = $conn->lastInsertId(); echo "Sikeresen beszúrás. Azonosító: $az"; }catch(PDOException $e) { echo $e->getMessage(); } $conn = null; ===== Tranzakció ===== setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $conn->beginTransaction(); $sql = "insert into dolgozok (vnev, knev, telepules, fizetes) values ('Nagy', 'János', 'Szolnok', 1350000)"; $conn->exec($sql); $sql = "insert into dolgozok (vnev, knev, telepules, fizetes) values ('Tanka', 'Pál', 'Budapest', 2450000)"; $conn->exec($sql); $sql = "insert into dolgozok (vnev, knev, telepules, fizetes) values ('Tola', 'Frigyes', 'Szolnok', 1740500)"; $conn->exec($sql); $conn->commit(); echo "Sikeresen tranzakció"; }catch(PDOException $e) { $conn->rollback(); echo $e->getMessage(); } $conn = null; ===== A prepare használata ===== setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $conn->beginTransaction(); $sql = "UPDATE Szemely SET telepules=? WHERE id=?"; $pre = $db->prepare($sql); $pre->execute(array('Szeged', 2)); $pre->execute(array('Zalaegerszeg', 3)); $conn->commit(); } catch (PDOException $e) { $conn->rollBack(); } ?> A tömb értéke mindig behelyettesítődik. ===== Lekérdezés ===== setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $sql = "SELECT User FROM user"; try { foreach($conn->query($sql) as $row) print $row['User'] . "\n"; }catch(PDOException $ex){ echo "Hiba történt!"; //naplozo_fuggveny($ex->getMessage()); } ?> ===== Módosítás ===== setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $conn->beginTransaction(); $sql = "UPDATE Szemely SET telepules='Debrecen' WHERE id=1"; $conn->exec($sql); $sql = "UPDATE Szemely SET telepules='Debrecen' WHERE id=2"; $conn->exec($sql); $conn->commit(); } catch (PDOException $e) { $conn->rollBack(); } ?> ===== Törlés ===== setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "delete from dolgozok where az=2"; $conn->exec($sql); echo "Sikeresen törölve"; }catch(PDOException $e) { echo $e->getMessage(); } $conn = null; ===== Linkek ===== * http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers * http://hu1.php.net/pdo