(PHP/MYSQL) mysql_real_escape_string funktioniert nicht
Kurzem habe ich ein problem mit INSERT INTO funktioniert nicht richtig beim einfügen bestimmter Zeichenfolgen. Ich entdeckte, dass die Ursache der Zeichenfolge enthaltene Apostrophe, die waren Durcheinander mit meinem code. Um dieses Problem zu lösen, ich habe versucht, zu verwenden mysql_real_escape_string()
, aber es wird nicht alles tun. Ich habe gelesen, dass es angeblich zu legen \ vor jedes "gefährliche" einen besonderen Charakter, aber wenn ich echo würde das Ergebnis mysql_real_escape_string()
zeigt er mir die gleiche Zeichenkette vor und nach, keine \ en.
Wie kann ich dieses Problem beheben?
Hier ist mein code...
<?php
include "connect.php"; //connect.php connects to the database.
mysql_real_escape_string($_POST['username']);
mysql_real_escape_string($_POST['password']);
mysql_real_escape_string($_POST['sdNamer']);
mysql_real_escape_string($_POST['sdTrunk']);
//$_POST['username'] and the rest is the data entered by the user.
$username = $_POST['username'];
$password = $_POST['password'];
$sdName = $_POST['sdNamer'];
$sdTrunkest = $_POST['sdTrunk'];
$sql = "INSERT INTO users (username, password, user_bio, starterDeck, Trunk) VALUES ('$username', '$password', 'User', '$sdName', '$sdTrunkest')";
//INSERT INTO won't work, because $sdTrunkest has string that contains an apostrophe, and mysql_real_escape_string isn't doing anything about it.
mysql_query($sql);
exit("result_message=Success");
?>
- Weisen Sie mysql_escape_string Rückgabewert in der variable ... Und mysqli verwendet ...
mysql_real_escape_string($_POST[...]);
in wo?- Wie Ihr code wird derzeit geschrieben, du bist einfach aufrufen
mysql_real_escape_string()
mehrmals vor zuweisen von Variablen Werten. Zunächst weisen Sie die$_POST
Werte zu getrennten Variablen, und wenden Siemysql_real_escape_string()
so (für jeden von Ihnen):$foo = mysql_real_escape_string($foo);
. Besser noch, die Verwendung der veraltetenmysql_*
API und wechseln Sie auf PDO oder MySQLi.
Du musst angemeldet sein, um einen Kommentar abzugeben.
mysql_real_escape_string()
gibt die geänderte Zeichenfolge, aber Sie sind nicht etwas zu tun mit string. Sie sind im wesentlichen nicht mitmysql_real_escape_string()
. Verwenden Sie den zurückgegebenen Wert anstelle des ursprünglichen, unveränderten Wert:Auch, als eine Randnotiz, es gibt zwei schwerwiegende Probleme mit deinem code:
mysql_*
Funktionen mehr. Aktualisieren Sie Ihren code. (Lesen Sie die Einführung hier, um loszulegen.)mysql_real_escape_string
verwendet wird, es auch tatsächlich bearbeitet den Gegner zwischen den Klammern. Und zu #2... Was soll ich speichern Sie Sie als? Sorry, ich bin absolut neu in PHP und Mysql.