Prepared Statement
Prepared Statements sind mit
new mysqli etwas anders umzusetzen wie mit pdo
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);
$stmt=$msql->prepare($sql);
?>
<?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
Die Prüfung (wenn gewollt) immer nach der Ausgabe und vor Objekt schließen einfügen,
gilt für new mysqli und pdo
<?php
Datenbank abfrage
Vorbereiten
$sql ="SELECT spalte1, spalte2, datum FROM a_table";
$stmt=$msql->prepare($sql);
$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');
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);
$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');
echo $row['spalte1'];
echo $row['spalte2'];
echo $datum->format('d.m.Y - H:i:s');
}
?>
INSERT
<?php
Formular muß erstellt werden!
$beitrag1 = isset($_POST['beitrag1']) ? $_POST['beitrag1'] : ''; // tested
$beitrag2 = isset($_POST['beitrag2']) ? $_POST['beitrag2'] : ''; // tested
$beitrag2 = isset($_POST['beitrag2']) ? $_POST['beitrag2'] : ''; // tested
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);
$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.";
}
echo "Insert erfolgreich.";
}
else
{
echo "Da ist was schief gelaufen.";
}
$sqli = "INSERT INTO a_table (spalte1, spalte2) VALUES(?, ?)";
$stmt=$pdo->prepare($sqli);
$stmt=$pdo->prepare($sqli);
Audführen
if ($stmt->execute(array($beitrag1, $beitrag2)))
Prüfen
{
echo "Insert erfolgreich.";
}
else
{
echo "Da ist was schief gelaufen.";
}
echo "Insert erfolgreich.";
}
else
{
echo "Da ist was schief gelaufen.";
}
?>
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.
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.
Auflistung oder Formular muß erstellt werden
<?php
$sid = isset($_GET['id']) ? $_GET['id'] : ''; // tested
oder
$sid = isset($_POST['id']) ? $_POST['id'] : ''; // tested
oder
$sid = isset($_POST['id']) ? $_POST['id'] : ''; // tested
?>
<?php
$beitrag1 = isset($_POST['beitrag1']) ? $_POST['beitrag1'] : ''; // tested
$beitrag2 = isset($_POST['beitrag2']) ? $_POST['beitrag2'] : ''; // tested
$beitrag2 = isset($_POST['beitrag2']) ? $_POST['beitrag2'] : ''; // tested
?>
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);
$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.";
}
echo "Update erfolgreich.";
}
else
{
echo "Da ist was schief gelaufen.";
}
<?php
$sqlu = "UPDATE a_table SET spalte1=?, spalte2=? WHERE id=?";
$stmt=$pdo->prepare($sqlu);
$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.";
}
echo "Update erfolgreich.";
}
else
{
echo "Da ist was schief gelaufen.";
}
?>
DELETE
Auflistung oder Formular muß erstellt werden
<?php
$sid = isset($_GET['id']) ? $_GET['id'] : ''; // tested
oder
$sid = isset($_POST['id']) ? $_POST['id'] : ''; // tested
oder
$sid = isset($_POST['id']) ? $_POST['id'] : ''; // tested
?>
Datenbank Eintrag löschen
Vorbereiten
<?php
$sqld = "DELETE FROM a_table WHERE id=?";
$stmt=$msql->prepare($sqld);
$stmt->bind_param('i', $sid);
$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.";
}
echo "Delete erfolgreich.";
}
else
{
echo "Da ist was schief gelaufen.";
}
<?php
$sqld = "DELETE FROM a_table WHERE id=?";
$stmt=$pdo->prepare($sqld);
$stmt=$pdo->prepare($sqld);
Ausführen
if ($stmt->execute(array($sid)))
Prüfen
{
echo "Delete erfolgreich.";
}
else
{
echo "Da ist was schief gelaufen.";
}
echo "Delete erfolgreich.";
}
else
{
echo "Da ist was schief gelaufen.";
}
?>
DELETE löscht sofort und unwiderbringlich die gesamte Zeile(id),
es ist ratsam vorher eine Abfrage zu erstellen.
es ist ratsam vorher eine Abfrage zu erstellen.