Bedeutung der Verbindungskennung in mysql_real_escape_string ()

stimmen
3

Deshalb ist es notwendig, eine Verbindungskennung als einen Eingang zu haben, wenn mysql_real_escape_string () verwenden. Ich weiß, dass die Funktion sollte mit MySQL-Abfragen verwendet werden, aber die Funktion ist wirklich nur eine String-Manipulation.

Veröffentlicht am 30/12/2009 um 02:02
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
6

Von dem PHP - Handbuch :

Maskiert spezielles Zeichen in der unescaped_string, unter Berücksichtigung des aktuellen Zeichensatz der Verbindung, so dass es sicher ist, es in einem mysql_query (). Wenn binäre Daten eingesetzt werden soll, muss diese Funktion verwendet werden.

und:

Wenn die Verbindungskennung angegeben wird, ist das letzte Glied geöffnet durch mysql_connect () angenommen. Falls keine solche Verbindung gefunden wird, wird es versuchen, einen zu erstellen, als ob mysql_connect () ohne Argumente aufgerufen wurde. Wenn keine Verbindung gefunden oder aufgebaut werden, wird ein E_WARNING Ebene Fehler generiert.

Eine Verbindung wird benötigt, um den Zeichensatz zu bestimmen.

Beantwortet am 30/12/2009 um 02:04
quelle vom benutzer

stimmen
1

mysql_real_escape_string:

Maskiert spezielles Zeichen in der unescaped_string, unter Berücksichtigung des aktuellen Zeichensatz der Verbindung , so dass es sicher ist , es in einem mysql_query ().

Beantwortet am 30/12/2009 um 02:05
quelle vom benutzer

stimmen
3

Haben Sie einen Lese von http://ilia.ws/archives/103-mysql_real_escape_string-versus-Prepared-Statements.html

Zum Beispiel wird, wenn GBK-Zeichensatz verwendet wird, ist es nicht eine ungültige Multibyte-Sequenz 0xbf27 (¿ ‚) in 0xbf5c27 (¿\‘ oder in GBK ein einziges gültigen Multibyte-Zeichen, gefolgt von einem Apostroph) umwandeln. Um zu ermitteln, muss die richtige Entkommen Methodik mysql_real_escape_string (), um den Zeichensatz verwendet wissen, die in der Regel aus der Datenbankverbindung Cursor abgerufen wird.

Vielleicht als Folge dieses Artikels aber klar , nachdem es die Funktion mysql_set_charset () hat zu der MySQL - Erweiterung hinzugefügt. Der Zeichensatz ist eine Eigenschaft der mysql Verbindung (Ressource).
Wenn Sie mehrere Verbindungen haben , sollten Sie wirklich geben sie nicht an mysql_real_escape_string () (und immer verwenden mysql_set_charset () anstelle von SET NAMES).
Wenn Sie nicht die Verbindung Ressource übergeben wird die Funktion die letzte Verbindung von Ihrem Skript festgelegt verwenden. Wenn der charset der beiden (oder mehr Verbindungen) unterscheiden sich das Ergebnis real_escape_string () kann vom Server falsch interpretiert werden (erwartet eine andere Kodierung und damit unterschiedliche Escape - Regeln).
Und da es nicht weh tut, so zu tun, auch wenn Sie nur eine Verbindung hat (kann man mit absoluter Sicherheit sagen, dass dies so bis zum Ende der Zeit sein?) Ist es einfach immer weiter.

Beantwortet am 30/12/2009 um 02:31
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more