
584 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
fprintf(stderr, "Verbindung zur Datenbank fehlgeschlagen: Fehler: %s\n",
mysql_error(&mysql));
}
Wenn Sie mysql_options() benutzen, liest die MySQL-Bibliothek die [client]- und ihr_
programm_name-Abschnitte in der my.cnf-Datei. Das stellt sicher, dass Ihr Programm
funktioniert, selbst wenn jemand MySQL auf Nicht-Standard-Weise eingerichtet hat.
Beachten Sie, dass mysql_real_connect() beim Verbinden den reconnect-Flag (Teil der
MySQL-Struktur) auf einen Wert von 1 setzt. Dieser Flag gibt an, dass ein erneuter
Verbindungsversuch zum Server gemacht wird, bevor aufgegeben wird, wenn eine Anfrage
wegen einer verloren gegangenen Verbindung nicht ausgef¨uhrt werden kann.
9.4.3.42 mysql_real_escape_string()
unsigned int mysql_real_escape_string(MYSQL *mysql, char *nach, const char
*von, unsigned int laenge)
Beschreibung
Diese Funktion wird benutzt, um eine zul¨assige SQL-Zeichenkette zu erzeugen, die Sie in
einem SQL-Statement benutzen k¨onnen. Siehe Abschnitt 7.1.1.1 [String syntax], Seite 368.
Die Zeichenkette in von wird in eine escapete SQL-Zeichenkette kodiert, wobei der aktuelle
Zeichensatz der Verbindung ber¨ucksichtigt wird. Das Ergebnis wird in nach platziert und
ein Null-Byte am Ende angef¨ugt. Kodierte Zeichen sind NUL (ASCII 0), ‘\n’, ‘\r’, ‘ \’, ‘’’,
‘"’ und Control-Z (siehe Abschnitt 7.1.1 [Literals], Seite 368).
Die Zeichenkette, auf die von von gezeigt wird, muss laenge Bytes lang sein. Sie m¨ussen den
nach-Puffer so zuweisen, dass er mindestens laenge*2+1 Bytes lang ist. (Im schlimmsten
Fall muss jedes Zeichen mit zwei Bytes kodiert werden, und Sie brauchen Platz f¨ur das Null-
Byte am Ende.) Wenn mysql_escape_string() zur ¨uckgibt, sind die Inhalte von nach eine
Null-begrenzte Zeichenkette. Der R¨uckgabewert ist die L¨ange der kodierten Zeichenkette,
ohne das Null-Zeichen am Ende.
Beispiel
char anfrage[1000],*end;
end = strmov(anfrage,"INSERT INTO tabelle values(");
*end++ = ’\’’;
end += mysql_real_escape_string(&mysql, end,"Was is’n das?",12);
*end++ = ’\’’;
*end++ = ’,’;
*end++ = ’\’’;
end += mysql_real_escape_string(&mysql, end,"Bin¨ardaten: \0\r\n",17);
*end++ = ’\’’;
*end++ = ’)’;
Kommentare zu diesen Handbüchern