SQL (pdo) speichert die Daten nicht
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
-
Hallo Zusammen
Ich habe neu eine sql erstellt. Das Abfragen der Daten aus der Datenbank funktioniert, aber speichern leider nicht. Es gibt keine Fehlermeldung, aber gehe ich in die Datenbank schauen, sehe ich die geänderten Daten nicht.
$pdo = new PDO('mysql:host=server;dbname=datenbank', 'benutzer', 'passwort'); if (0 == '$ds') { $statement = $pdo->prepare("INSERT INTO person ( nname, pname, typ, bild )VALUES( '$nname', '$pname', '$typ', '$bild' )"); } else { $statement = $pdo->prepare("update person set nname='$nname', pname='$pname', typ='$typ', bild='$bild' where (ds = $ds)"); }
Was habe ich falsch gemacht. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Der Code könnte kaum schlechter formatiert sein, da erkenne ich nicht viel.
Würde aber sagen das man prepare genau so nicht verwendet.
https://www.php.net/manual/de/pdo.prepare.php
Beitrag zuletzt geändert: 25.11.2019 14:58:13 von horstexplorer -
horstexplorer schrieb:
Würde aber sagen das man prepare genau so nicht verwendet.
Exakt. Prepared statements sollen Platzhalter für die Werte enthalten, nicht die Werte an sich.
Des weiteren enthält folgende Zeile vermutlich einen Fehler:
if (0 == '$ds') {
Du überprüfst, ob der String "$ds" gleich dem Integer 0 ist. Das kann niemals true sein. Sofern du die Variable vergleichen möchtest sollten die Anführungszeichen weg, also 0 == $ds statt 0 == '$ds'.
Ich vermute, dass $ds für die userID steht. Mit dem aktuellen code werden also nur Nutzer aktualisiert und keine neuen erstellt, da die oben genannte Zeile fehlerhaft ist. -
Habe "if (0 == '$ds')" angepasst.
früher bei mysql ging der code so.
wie muss dies nun für pdo gemacht werden?
-
So wie es in der Dokumentation an den Beispielen erklärt ist.
https://www.php.net/manual/de/pdo.prepare.php
Ich persönlich finde die Variante der Zuweisung der Werte mit bindParam/Value schöner, an sich geht es aber auch über execute() so wie in den Beispielen beschrieben.
https://www.php.net/manual/de/pdostatement.bindparam.php
Beitrag zuletzt geändert: 25.11.2019 16:38:15 von horstexplorer -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage