Frage von erichkeller, 39

Wie bekomme ich aus folgendem Code ein Prepared Statement?

Ich habe eine funktionierende Abfrage mit "query". Da ich eine Variable einsetzen möchte, brauche ich eine mit "prepare", leider funktioniert es noch nicht wie es soll.

    $stmt = $con->query("UPDATE dbdateien
                            SET papierkorb=0
                            WHERE dateiname='affe4.jpg'");
    //$stmt->bindParam(':dateiname', $name, PDO::PARAM_STR);
    //$stmt->execute();
    unset($stmt);
Antwort
von maximilianus7, 10

nur weil du variable benutzen möchtest, braucht du kein prepare. sinnvoll ist es schon, wenn die möglichkeit von SQL-injections besteht, d.h. der inhalt der variablen ist eine benutzereingabe. ist der bildname aber z.b. aus einer selektion von bildern eines verzeichnissen ermittelt -du hast also volle kontrolle über den inhalt, reicht ein einfaches query:

$stmt = $con->query("UPDATE dbdateien
SET papierkorb=0
WHERE dateiname='$name'");
Antwort
von RakonDark, 20
 $stmt = $con->prepare("UPDATE dbdateien
SET papierkorb=:papierkorb
WHERE dateiname=:dateiname");
$stmt->execute(array(":papierkorb"=>0,":deteiname"=>'affe4.jpg'));
Kommentar von maximilianus7 ,

wenn papierkorb eine INT variable geht das mit dieser abgekürzten form nicht, da ist bindParam schon notwendig. wenn aber fest auf =0 gesetzt werden soll, geht das schon:

$stmt = $con->prepare("UPDATE dbdateien
SET papierkorb=0 WHERE dateiname=:dateiname");
$stmt->execute(array(":deteiname"=>'affe4.jpg'));
Kommentar von RakonDark ,

dann hast du es falsch verstanden ,

http://stackoverflow.com/questions/1179874/what-is-the-difference-between-bindpa...

es geht darum den parameter zu binden, so das danach verändert werden kann und dann execute das richtige nimmt .

ich mach bei allen die sachen wie in meinem beispiel und solange es nicht nach dem prepare geändert wird , funtioniert es auch wie gewünscht .

im übrigen ist bei mysql eigentlich alles ein string in der übergabe und im feld dann ein wert , wüsste nicht wo es anders ist .  aber ich lasse mir das gerne erklären .

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten