Kann jemand etwas Licht auf die Unterschiede zwischen diesen zwei Funktionen vergossen hat, von der PHP-Handbuchmysql_real_escape_string VS addslashes
addslashes: eine Zeichenfolge zurück mit Schrägstriche vor Zeichen, die in Datenbankabfragen angegeben werden müssen, usw. Diese Zeichen sind Apostroph ('), doppelte Anführungszeichen ("), Backslash() und NUL (das NULL-Byte)
mysql_real_escape_string. mysql_real_escape_string() ruft MySQL-Library-Funktion mysql_real_escape_string, die Schrägstriche auf die folgenden Zeichen prepends: \ x00, \ n, \ r, \, ', "und \ x1a.
von dem ich den Hauptunterschied erhalte, ist \ x00, \ n \ r \ x1a, die addslashes nicht entgeht, können Sie mir sagen, was die Bedeutung davon ist?
dank
ANSI SQL spezifiziert, dass ein einzelnes Anführungszeichen durch zwei einfache Anführungszeichen in einer Reihe dargestellt werden kann, aber mysql_real_escape_string() tut das nicht - es entkommt immer mit einem Backslash, soweit ich es gesehen habe. Wenn Sie ein Beispiel für eine MySQL-Version haben, die durch eine Verdoppelung des Anführungszeichens nicht möglich ist, wäre ich an dem Beispiel interessiert. –
@BillKarwin, PHPs 'mysql_real_escape_string' ruft MySQL [mysql_real_escape_string'] (http://dev.mysql.com/doc/refman/4.1/en/mysql-real-escape-string.html) auf, das macht, was es will den Fäden entkommen. Die PHP-Dokumentation sagt nun, dass es Blackslashes verwendet, aber die MySQL-Dokumentation sagt nichts darüber aus. Ich erinnere mich, dass es irgendwann mit ''' 'anstatt mit' \' 'fliehen würde, vielleicht ist das nicht mehr der Fall, oder es erfordert bestimmte Verbindungseinstellungen (mysql_real_escape_string nimmt ein Verbindungsargument, um es danach zu überprüfen alle). – zneak
Aha, ich habe getestet und herausgefunden, dass, wenn Sie 'SQL_MODE = NO_BACKSLASH_ESCAPES 'setzen, es sich so verhält, wie Sie es beschreiben. Meine Verwirrung war, weil mysqldump die doppelten Anführungszeichen immer noch nicht tut, selbst wenn Sie diesen SQL-Modus eingestellt haben. Dies bedeutet, dass Sie eine Speicherabbilddatei erstellen können, die nicht auf dem Server, der sie generiert hat, erneut importiert werden kann. –