2017-03-20 2 views
0

ausgeführt wird. Ich bin schon eine Weile hier und habe Probleme mit meinem SQL. Vor kurzem habe ich ein wenig über vorbereitete Aussagen gelernt und ich benutze sie bis jetzt ohne Probleme. Aber jetzt habe ich das Problem, dass ich keine Fehler bekomme, wenn ich die verschlüsselte Abfrage manuell in phpmyadmin übertrage, aber wenn ich den Code vom Server übertrage, werden keinerlei Datensätze aktualisiert.Aktualisierungsabfrage wird nicht aktualisiert, wenn sie in Code

excecuted Code:

$stmt = $conn->prepare("UPDATE `diensten` SET `titel` = ':titel', `content` = ':beschrijving', `img` = ':img' WHERE `diensten`.`id` = ':id'"); 
    $stmt->execute(array(':title' => $titel, ':beschrijving' => $beschrijving, ':img' => $img, ':id' => $id)); 

Entschuldigung der Holländer im Code, obwohl es keine Funktionalität behindern sollte.

+0

Ihre Anfrage zu diesem vorbereiten ändern '$ stmt = $ conn-> prepare (" UPDATE diensten SET titel =: titel, content =: beschrijving, img =: img WHERE id =: id ");' – Mario

+0

Ich habe das Duplikat wieder geöffnet (http://stackoverflow.com/questions/11321491/when-to-use-single-quotes-double- quotes-and-backticks-in-mysql), weil das generisch über verschiedene Arten von Anführungszeichen war. Das Problem hier ist speziell die Typisierung mit Parametern, so dass die Antwort nicht auf dieses spezielle Problem fokussiert ist (die ausgezeichnete Antwort deckt es ab, aber es ist ein bisschen weit unten und verwendet vorbereitete Anweisungen in MySQL und nicht über eine Anwendungssprache) . –

Antwort

2

Wenn Sie vorbereitete Anweisungen verwenden, brauchen Sie keine einfachen Anführungszeichen um die Werte. Der Typ wird durch die Parametereingabe behandelt. So müssen Sie einfach:

$stmt = $conn->prepare(" 
UPDATE `diensten` 
    SET `titel` = :titel, 
     `content` = :beschrijving, 
     `img` = :img 
WHERE `diensten`.`id` = :id"); 

(ich dies aus Gründen der Lesbarkeit auf mehrere Zeilen setzen.)

Verwandte Themen