2012-03-26 8 views
0

Ich benutze Real Escape String, um Zeichen wie `bringen SQL-Fehler zu stoppen. Dies ist Teil meines Codes, sollte es von einem Formular aktualisieren. Ich brauche Hilfe herauszufinden, wie die Escape-Zeichenfolge mit Update zu tun.PHP mysql real escape mit update

$Comments = mysql_real_escape_string($_POST['Comments']); 
$id = mysql_real_escape_string($_POST['id']); 
$sql="UPDATE Worklog SET Comments = '$Comments' WHERE id = '$id'"; 
mysql_query($sql); 

    <form action="comments.php?id=<?php echo $stuff['id'];?>" method="post"> 

    <br /> 
    Comments: <br /> 
    <textarea name="Comments" method="post" cols="20" rows="5" wrap="hard"><?php echo $stuff['Comments']; ?></textarea> <br /> 

    <br /> 
    <input type="submit" name="makeitgos" /> 
    <br /> 
    <br /> 
    </form> 

    </body> 
    </html> 

`

+3

Vorsicht, um den Fehler, den Sie sehen, hinzufügen? – atk

+0

Beachten Sie, dass die mysql_-Funktionen veraltet sind. Sie sollten wahrscheinlich anfangen, PDO zu verwenden, da das die Flucht für Sie übernimmt. – liquorvicar

+0

Vielen Dank für den Rat, ich bin in PDO suchen, aber immer noch nicht zur Arbeit, würden Sie in der Lage, ein Beispiel mit meinem Code oben zur Verfügung stellen? Vielen Dank. – Matt

Antwort

-2

Ihr Code scheint ganz gut, mysql_real_escape_string verwendet, ist nützlich, wenn Sie immer noch die MySQL-Bibliothek verwenden. Beachten Sie jedoch, dass ich vorschlagen würde, ob $id numerisch ist (mit is_numeric($id)), bevor Sie es auf Ihre SQL-Anweisung anwenden.

Darüber hinaus können Sie in prepared statements mit mysqli und PDO suchen. Die Verwendung vorbereiteter Anweisungen hat den Vorteil, dass die MySQL-Injektion weniger wahrscheinlich ist (beachten Sie, dass SQL-Injection eine Sicherheitslücke darstellt und nicht nur Unannehmlichkeiten) und dass Ihre SQL-Abfragen in der Regel ein wenig schneller sind (insbesondere bei der Wiederverwendung Ihrer Abfragen).

Apropos Flucht, Sie sollten Ihre <?php echo $_POST[x]; ?> 's wirklich entkommen, da diese immer noch einige Probleme verursachen können, wenn beispielsweise "><script>alert('hai');</script> als ID oder Kommentar eingegeben wird. Sie sollten diese mit htmlspecialchars umgehen.

Edit: Antwort passte nicht ganz die Frage.

+0

Wie macht das einen Unterschied? – Ibu

+0

Sorry, hat es nicht. Ich habe meinen Posten repariert. – ralphje

0

Ich stimme mit Liquorvicar in diesem PDO scheint die Dinge viel einfacher zu machen.

Ich lerne nur gerade PHP, aber ich glaube, dass Sie das Zeichen in einer doppelten Zeichenfolge mit einem Trennzeichen entkommen können. Auch wenn ich dies in meiner eigenen MySQL-Datenbank versuchte, funktionierte die Abfrage nicht, wenn ich keine doppelten Anführungszeichen um die Variablen verwendete. Siehe Arbeitscode: