PHP Datenbankzugriff: PDO

From Coders.Bay Wiki
Jump to navigation Jump to search

Datenbankzugriff: PDO[edit]

Link zur alten Seite: https://web.cb-kompetenzen.at/pdo/

Verbindung zur MySQL-Datenbank mittels PDO:[edit]

<?php
$pdo = new PDO('mysql:host=localhost;dbname=test-db', 'root', '');
?>

Mit Try, Catch-Block[edit]

<?php
try {
  $pdo = new PDO('mysql:host=localhost;dbname=test-db', 'root', '');

} catch(PDOException $e) {
  echo $e->getMessage();
}
?>

SQL Query an Datenbank senden:[edit]

<?php
$pdo = new PDO('mysql:host=localhost;dbname=test-db', 'root', '');

$sql = "SELECT * FROM users";
foreach ($pdo->query($sql) as $row) {
  echo $row['email']."<br />";
  echo $row['firstName']."<br />";
  echo $row['lastName']."<br /><br />";
}
?>

Prepared Statment mit anonymen Parametern[edit]

<?php
$pdo = new PDO('mysql:host=localhost;dbname=databasename', 'username', 'password');

$statement = $pdo->prepare("SELECT * FROM users WHERE vorname = ? AND nachname = ?");
$statement->execute(array('Max', 'Mustermann'));
while($row = $statement->fetch()) {
  echo $row['vorname']." ".$row['nachname']."<br />";
  echo "E-Mail: ".$row['email']."<br /><br />";
}
?>

Prepared Statement mit benannten Parametern:[edit]

<?php
$pdo = new PDO('mysql:host=localhost;dbname=databasename', 'username', 'password');

$statement = $pdo->prepare("SELECT * FROM users WHERE vorname = :vorname AND nachname = :nachname");
$statement->execute(array(':vorname' => 'Max', ':nachname' => 'Mustermann'));
while($row = $statement->fetch()) {
  echo $row['vorname']." ".$row['nachname']."<br />";
  echo "E-Mail: ".$row['email']."<br /><br />";
}
?>

Anzahl der betroffenen Zeilen mittels rowCount() ermitteln:[edit]

<?php
$pdo = new PDO('mysql:host=localhost;dbname=databasename', 'username', 'password');

$statement = $pdo->prepare("SELECT * FROM users WHERE vorname = ?");
$statement->execute(array('Max'));
$userCount = $statement->rowCount();
echo "Es wurden $userCount gefunden";
?>

Fehlermeldung abrufen mit errorInfo()[edit]

<?php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');


// Anonyme Parameter
$statement = $pdo->prepare("INSERT INTO tabelle (spalte1, spalte2, splate3) VALUES (?, ?, ?)");
$statement->execute(array('wert1', 'wert2', 'wert3'));


// Benannte Parameter Version 1
$statement = $pdo->prepare("INSERT INTO users (email, vorname, nachname) VALUES (:email, :vorname, :nachname)");
$statement->execute(array('email' => 'info@php-einfach.de', 'vorname' => 'Klaus', 'nachname' => 'Neumann'));


// Benannte Parameter Version 2
$newUser = array();
$newUser['email'] = 'info@php-einfach.de';
$newUser['vorname'] = 'Klaus';
$newUser['nachname'] = 'Neumann';
$newUser['weiteres_feld'] = 'Dieses wird beim Eintragen ignoriert';

$statement = $pdo->prepare("INSERT INTO users (email, vorname, nachname) VALUES (:email, :vorname, :nachname)");
$statement->execute($newUser);

?>

Daten einfügen per INSERT[edit]

<?php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');


// Anonyme Parameter
$statement = $pdo->prepare("INSERT INTO tabelle (spalte1, spalte2, splate3) VALUES (?, ?, ?)");
$statement->execute(array('wert1', 'wert2', 'wert3'));


// Benannte Parameter Version 1
$statement = $pdo->prepare("INSERT INTO users (email, vorname, nachname) VALUES (:email, :vorname, :nachname)");
$statement->execute(array('email' => 'info@php-einfach.de', 'vorname' => 'Klaus', 'nachname' => 'Neumann'));


// Benannte Parameter Version 2
$newUser= array();
$newUser['email'] = 'info@php-einfach.de';
$newUser['vorname'] = 'Klaus';
$newUser['nachname'] = 'Neumann';
$newUser['weiteres_feld'] = 'Dieses wird beim Eintragen ignoriert';

$statement = $pdo->prepare("INSERT INTO users (email, vorname, nachname) VALUES (:email, :vorname, :nachname)");
$statement->execute($newUser);

?>

Daten aktualisieren per UPDATE[edit]

<?php
  $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
  $statement = $pdo->prepare("UPDATE users SET email = ? WHERE id = ?");
  $statement->execute(array('neu@php-einfach.de', 1));
?>


<?php
  $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
  $statement = $pdo->prepare("UPDATE users SET email = :email_neu WHERE id = :id");
  $statement->execute(array('id' => 1, 'email_neu' => 'neu@php-einfach.de'));
?>


<?php
  $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
  $statement = $pdo->prepare("UPDATE users SET email = :email_neu WHERE id = 1");
  $statement->execute(array('email_neu' => 'neu@php-einfach.de'));
?>

Daten löschen mittels DELETE[edit]

<?php
  $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
  $statement = $pdo->prepare("DELETE FROM tabelle WHERE spalte = ?");
  $statement->execute(array('Wert für Spalte'));
?>


<?php
  $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
  $statement = $pdo->prepare("DELETE FROM users WHERE id = ?");
  $statement->execute(array(1)); //Löscht Benutzer mit ID 1
?>


<?php
  $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
  $statement = $pdo->prepare("DELETE FROM users WHERE vorname = :vorname AND nachname = :nachname");
  $statement->execute(array('vorname' => 'Max', 'nachname' => 'Mustermann')); //Löscht Benutzer mit Namen Max Mustermann
?>