pdo statements
Prepared Statement
Prepared Statements sind mit
new mysqli etwas anders umzusetzen wie mit pdo
Hier ein paar ganz einfache Beispiele:
<?php
$sql ="SELECT spalte1, spalte2, datum FROM a_table";
$stmt=$msql->prepare($sql);
?>
$sql =...prepare($sql); ist das gleiche wie:
<?php
$stmt=$msql->prepare("SELECT spalte1, spalte2, datum FROM a_table");
?>
SELECT
Abfrage mit überprüfung
Die Prüfung (wenn gewollt) immer nach der Ausgabe und vor Objekt schließen einfügen,
gilt für new mysqli und pdo
<?php
Es wird die entsprechende Datenbank Verbindung benötigt
Datenbank abfrage
Vorbereiten
$sql ="SELECT spalte1, spalte2, datum FROM a_table";
$stmt=$msql->prepare($sql);
Ausführen
$stmt->execute();
Daten in Variable ($result) für ausgabe sammeln
$result = $stmt->get_result();
Daten ausgabe
while ($row = $result->fetch_assoc())
{
Die Daten
$datum = new DateTime($row['datum']);
echo $row['spalte1'];
echo $row['spalte2'];
echo $datum->format('d.m.Y - H:i:s');
}
$sql ="SELECT spalte1, spalte2, datum FROM a_table";
$stmt=$pdo->prepare($sql);
Ausführen
$stmt->execute();
Daten ausgabe
while ($row = $stmt->fetch())
{
Die Daten
$datum = new DateTime($row['datum']);
echo $row['spalte1'];
echo $row['spalte2'];
echo $datum->format('d.m.Y - H:i:s');
}
Datenbank auf Daten prüfen einfügen
Objekt schließen einfügen
Verbindung beenden einfügen
?>
INSERT
<?php
Es wird die entsprechende Datenbank Verbindung benötigt
Es wird ein Formular benötigt.
Formular muß erstellt werden!
$beitrag1 = isset($_POST['beitrag1']) ? $_POST['beitrag1'] : ''; // tested
$beitrag2 = isset($_POST['beitrag2']) ? $_POST['beitrag2'] : ''; // tested
// tested Symbolisch für geprüfte Daten aus einem Formular
In Datenbank eintragen
Vorbereiten
$sqli = "INSERT INTO a_table (spalte1, spalte2) VALUES (?, ?)";
$stmt=$msql->prepare($sqli);
$spalte1 = $msql->real_escape_string($beitrag1);
$spalte2 = $msql->real_escape_string($beitrag2);
$stmt->bind_param('ss', $spalte1, $spalte2);
Ausführen
if ($stmt->execute())
Prüfen
{
echo "Insert erfolgreich.";
}
else
{
echo "Da ist was schief gelaufen.";
}
$sqli = "INSERT INTO a_table (spalte1, spalte2) VALUES(?, ?)";
$stmt=$pdo->prepare($sqli);
Audführen
if ($stmt->execute(array($beitrag1, $beitrag2)))
Prüfen
{
echo "Insert erfolgreich.";
}
else
{
echo "Da ist was schief gelaufen.";
}
Objekt schließen einfügen
Verbindung beenden einfügen
?>
UPDATE
Beim updaten mit Anonymus(?) sollte die reihenfolge der Daten eingehalten werden.
UPDATE ... SET spalte1=?, spalte2=? ...
sollte die gleiche reihenfolge wie die Spalten der Tabelle (a_table) haben!
WHERE id=? ist mit Anonymus(?) der letzte gebundene parameter.
Es wird eine Auflistung oder ein Formular benötigt.
Auflistung oder Formular muß erstellt werden
<?php
$sid = isset($_GET['id']) ? $_GET['id'] : ''; // tested
oder
$sid = isset($_POST['id']) ? $_POST['id'] : ''; // tested
?>
// tested Symbolisch für geprüfte Daten aus einer Auflistung oder einem Formular
<?php
$beitrag1 = isset($_POST['beitrag1']) ? $_POST['beitrag1'] : ''; // tested
$beitrag2 = isset($_POST['beitrag2']) ? $_POST['beitrag2'] : ''; // tested
?>
// tested Symbolisch für geprüfte Daten aus einer Auflistung oder einem Formular
Es wird die entsprechende Datenbank Verbindung benötigt
Datenbank Eintrag ändern
Vorbereiten
<?php
$sqlu = "UPDATE a_table SET spalte1=?, spalte2=? WHERE id=?";
$stmt=$msql->prepare($sqlu);
$spalte1 = $msql->real_escape_string($beitrag1);
$spalte2 = $msql->real_escape_string($beitrag2);
$stmt->bind_param('ssi', $spalte1, $spalte2, $sid);
Ausführen
if ($stmt->execute())
Prüfen
{
echo "Update erfolgreich.";
}
else
{
echo "Da ist was schief gelaufen.";
}
<?php
$sqlu = "UPDATE a_table SET spalte1=?, spalte2=? WHERE id=?";
$stmt=$pdo->prepare($sqlu);
Ausführen
if ($stmt->execute(array($beitrag1, $beitrag2, $sid)))
Prüfen
{
echo "Update erfolgreich.";
}
else
{
echo "Da ist was schief gelaufen.";
}
Objekt schließen einfügen
Verbindung beenden einfügen
?>
DELETE
Es wird eine Auflistung oder ein Formular benötigt.
Auflistung oder Formular muß erstellt werden
<?php
$sid = isset($_GET['id']) ? $_GET['id'] : ''; // tested
oder
$sid = isset($_POST['id']) ? $_POST['id'] : ''; // tested
?>
// tested Symbolisch für geprüfte Daten aus einer Auflistung oder einem Formular
Es wird die entsprechende Datenbank Verbindung benötigt
Datenbank Eintrag löschen
Vorbereiten
<?php
$sqld = "DELETE FROM a_table WHERE id=?";
$stmt=$msql->prepare($sqld);
$stmt->bind_param('i', $sid);
Ausführen
if ($stmt->execute())
Prüfen
{
echo "Delete erfolgreich.";
}
else
{
echo "Da ist was schief gelaufen.";
}
<?php
$sqld = "DELETE FROM a_table WHERE id=?";
$stmt=$pdo->prepare($sqld);
Ausführen
if ($stmt->execute(array($sid)))
Prüfen
{
echo "Delete erfolgreich.";
}
else
{
echo "Da ist was schief gelaufen.";
}
Objekt schließen einfügen
Verbindung beenden einfügen
?>
Löscht die gesamte Zeile(id) aus der Tabelle a_table der gewählten id.
DELETE löscht sofort und unwiderbringlich die gesamte Zeile(id),
es ist ratsam vorher eine Abfrage zu erstellen.
Top
Top