Bei mir aufm Rechener ist: PHP Version 5.4.7
Hatte xampp extra neuinstalliert usw ...
Auf unserem webserver hab ichs noch nicht probiert.
Die Prepared Statements funktionieren. Tut alles, was es soll.
Allerdings nur soweit, wie man es auf php.net als "nicht Pro" verteht ;D
Daher dachte ich ein HowTo wäre ganz nett =)
zB ist mir noch nicht klar, was bei folgendem eigtl wirklich passiert:
$stmt->execute(array($ID))
execute() führt SQL aus,
aber wozu wird ein array in
execute(array($ID))
genutzt?
Hatte getestet, ob man da mehrere IDs auf einmal abfragen kann. Ohne Erfolg.
Zitat
Was hast du denn damit vor? Oder einfach nur für das Verständnis?
Ich möchte es in Zukunft nutzen, da SQL-injection dann ja nicht mehr möglich ist.
Schneller soll es auch sein, wobei es bei sich standig ändernden Statements/Querys eher langsamer scheint.
EDIT:
Bin schon mal nen Schritt weiter gekommen.
db connecten und im Fehlerfall error in var packen:
// connect to the db
try{
$dbh = new PDO('mysql:host='.MYSQL_HOST.';dbname='.MYSQL_DATENBANK, MYSQL_BENUTZER, MYSQL_KENNWORT);
}catch(PDOException $e){
$error = 'Error: '.$e->getMessage();
}
EDIT 2:
gar nicht so einfach das alles auf anhieb zu verstehen. Aber hier ein bsp:
// connect to db:
try{
$dbh = new PDO('mysql:host='.MYSQL_HOST.';dbname='.MYSQL_DATENBANK, MYSQL_BENUTZER, MYSQL_KENNWORT);
}catch(PDOException $e){
$error = 'Error: '.$e->getMessage();
die(); // die or what ever ...
}
// select und ausgabe im "format" FETCH_ASSOC (== mysql_fetch_array)
try{
$user=1;
$stmt = $dbh->prepare("SELECT user, pw, dies, das FROM table_name WHERE id = :value");
$stmt->execute(array('value' => trim($user)));
if($row = $stmt->fetch(PDO::FETCH_ASSOC)){
echo "<pre>";print_r($row);echo"</pre>";
}
}catch(PDOException $e){
$error = 'Error: '.$e->getMessage();
}
Alles anzeigen
Ich hab auch versucht den (zB) table zu binden (bindParam), habs aber nicht zum laufen gebracht:
try{
$user=1;
$stmt = $dbh->prepare("SELECT user, pw, dies, das FROM :table WHERE id = :value");
$stmt->execute(array('value' => trim($user), 'table' => 'table_name'));
if($row = $stmt->fetch(PDO::FETCH_ASSOC)){
echo "<pre>";print_r($row);echo"</pre>";
}
}catch(PDOException $e){
$error = 'Error: '.$e->getMessage();
}
Scheint nur für die values, also nach WHERE zu benutzen zu sein =/
Jemand ne idee, wie man den table und evtl sogar alles in der query zu binden?
btw - im falle eines error wie zB falscher table name ect bekomme ich auch keinen error zurück =/