unsigned long mysql_real_escape_string(MYSQL *mysql,
          char *to, const char *from, unsigned long length)
        
          Beachten Sie, dass mysql eine gültige,
          offene Verbindung sein muss. Diese ist erforderlich, da das
          Escape-Verhalten von dem Zeichensatz des Servers abhängt.
        
Beschreibung
Diese Funktion wird verwendet, um einen gültigen SQL-String zu erzeugen, den Sie in einer SQL-Anweisung benutzen können. Siehe Abschnitt 9.1.1, „Strings“.
          Der String in from ist als SQL-String mit
          Escape-Zeichen unter Berücksichtigung des aktuellen
          Zeichensatzes der Verbindung kodiert. Das Ergebnis wird in
          to platziert und ein abschließendes
          Nullbyte angehängt. Kodierte Zeichen sind
          NUL (ASCII 0),
          ‘\n’,
          ‘\r’,
          ‘\’,
          ‘'’,
          ‘"’ und Strg-Z (siehe
          Abschnitt 9.1, „Literale: wie Strings und Zahlen geschrieben werden“). (Streng genommen verlangt MySQL
          ein Escape-Zeichen im Anfrage-String nur für den Backslash
          und die Sorte Anführungszeichen, in welche der String
          eingefasst ist. Diese Funktion setzt auch die anderen Zeichen
          in Anführungszeichen, damit sie in Logdateien leichter zu
          lesen sind.)
        
          Der String, auf den from verweist, muss
          length Bytes lang sein. Den Puffer für
          to müssen Sie mit einer Länge von
          mindestens length*2+1 Bytes zuweisen. (Im
          schlimmsten Fall braucht vielleicht jedes Zeichen 2 Byte für
          die Kodierung und am Ende muss noch Platz für das Nullbyte
          vorhanden sein.) Wenn
          mysql_real_escape_string() zurückkehrt,
          ist der Inhalt von to ein auf null endender
          String. Der Rückgabewert ist die Länge des kodierten Strings
          ohne das abschließende Nullzeichen.
        
          Wenn Sie den Zeichensatz für die Verbindung umstellen
          müssen, sollten Sie die Funktion
          mysql_set_character_set() anstelle einer
          SET NAMES- (oder SET CHARACTER
          SET-)Anweisung verwenden.
          mysql_set_character_set() arbeitet wie
          SET NAMES, beeinflusst aber auch den von
          mysql_real_escape_string() verwendeten
          Zeichensatz. Das tut SET NAMES nicht.
        
Beispiel
char query[1000],*end;
end = strmov(query,"INSERT INTO test_table values(");
*end++ = '\'';
end += mysql_real_escape_string(&mysql, end,"What's this",11);
*end++ = '\'';
*end++ = ',';
*end++ = '\'';
end += mysql_real_escape_string(&mysql, end,"binary data: \0\r\n",16);
*end++ = '\'';
*end++ = ')';
if (mysql_real_query(&mysql,query,(unsigned int) (end - query)))
{
   fprintf(stderr, "Failed to insert row, Error: %s\n",
           mysql_error(&mysql));
}
          Die im Beispiel verwendete
          strmov()-Funktion gehört zur
          mysqlclient-Bibliothek und funktioniert wie
          strcpy(), gibt jedoch einen Zeiger auf die
          abschließende Null des ersten Parameters zurück.
        
Rückgabewerte
          Die Länge des in to gesetzten Werts ohne
          das abschließende Nullzeichen.
        
Fehler
Keine.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.

