[[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