Die Funktionen der C-API werden im Folgenden zusammengefasst und in einem späteren Abschnitt genauer beschrieben. Siehe hierzu Abschnitt 24.2.3, „C-API: Funktionsbeschreibungen“.
| Funktion | Beschreibung | 
| mysql_affected_rows() | Liefert die Anzahl der mit dem letzten UPDATE,DELETEoderINSERTgeänderten/gelöschten/eingefügten Zeilen | 
| mysql_autocommit() | Schaltet Autocommit ein oder aus | 
| mysql_change_user() | Ändert den Benutzer und die Datenbank für eine offene Verbindung | 
| mysql_charset_name() | Liefert den Namen des Standardzeichensatzes für die Verbindung | 
| mysql_close() | Schließt eine Serververbindung | 
| mysql_commit() | Committet die Transaktion. | 
| mysql_connect() | Verbindet sich mit einem MySQL Server. Diese Funktion ist veraltet;
                verwenden Sie stattdessen mysql_real_connect(). | 
| mysql_create_db() | Legt eine Datenbank an. Diese Funktion ist veraltet; verwenden Sie
                stattdessen die SQL-Anweisung CREATE
                DATABASE. | 
| mysql_data_seek() | Sucht in der Ergebnismenge einer Anfrage eine beliebige Datenzeile | 
| mysql_debug() | Führt ein DBUG_PUSHmit dem angegebenen String durch | 
| mysql_drop_db() | Löscht eine Datenbank. Diese Funktion ist veraltet; verwenden Sie
                stattdessen die SQL-Anweisung DROP
                DATABASE. | 
| mysql_dump_debug_info() | Lässt den Server Debugginginformationen in das Log schreiben | 
| mysql_eof() | Stellt fest, ob die letzte Zeile einer Ergebnismenge gelesen wurde.
                Diese Funktion ist veraltet; verwenden Sie stattdessen mysql_errno()odermysql_error(). | 
| mysql_errno() | Liefert die Fehlernummer für die zuletzt aufgerufene MySQL-Funktion | 
| mysql_error() | Liefert die Fehlermeldung für die zuletzt aufgerufene MySQL-Funktion | 
| mysql_escape_string() | Versieht Sonderzeichen in einem String, der in einer SQL-Anweisung benutzt werden soll, mit Escape-Symbolen | 
| mysql_fetch_field() | Liefert den Typ des nächsten Tabellenfelds. | 
| mysql_fetch_field_direct() | Liefert den Typ des Tabellenfelds mit der gegebenen Feldnummer | 
| mysql_fetch_fields() | Liefert ein Array aller Feldstrukturen | 
| mysql_fetch_lengths() | Liefert die Längen aller Spalten der aktuellen Zeile | 
| mysql_fetch_row() | Holt die nächste Zeile der Ergebnismenge ab | 
| mysql_field_seek() | Setzt den Spalten-Cursor auf eine gegebene Spalte | 
| mysql_field_count() | Liefert die Anzahl der Ergebnisspalten der letzten Anweisung | 
| mysql_field_tell() | Liefert die Position des Feld-Cursors, der für das letzte mysql_fetch_field()verwendet wurde | 
| mysql_free_result() | Gibt den von einer Ergebnismenge belegten Speicher frei | 
| mysql_get_client_info() | Liefert Versionsinformationen für den Client als String | 
| mysql_get_client_version() | Liefert Versionsinformationen für den Client als Integer | 
| mysql_get_host_info() | Liefert einen String, der die Verbindung beschreibt | 
| mysql_get_server_version() | Liefert die Versionsnummer des Servers als Integer. | 
| mysql_get_proto_info() | Liefert die Protokollversion der Verbindung | 
| mysql_get_server_info() | Liefert die Versionsnummer des Servers | 
| mysql_info() | Liefert Informationen über die zuletzt ausgeführte Anfrage | 
| mysql_init() | Holt oder initialisiert eine MYSQL-Struktur | 
| mysql_insert_id() | Liefert die für eine AUTO_INCREMENT-Spalte von der
                vorhergehenden Anfrage generierte ID | 
| mysql_kill() | Hält einen gegebenen Thread an | 
| mysql_library_end() | Finalisiert die MySQL-C-API-Bibliothek | 
| mysql_library_init() | Initialisiert die MySQL-C-API-Bibliothek | 
| mysql_list_dbs() | Liefert Datenbanknamen, die mit einem einfachen regulären Ausdruck übereinstimmen | 
| mysql_list_fields() | Liefert Feldnamen, die mit einem einfachen regulären Ausdruck übereinstimmen | 
| mysql_list_processes() | Liefert eine Liste der aktuellen Server-Threads | 
| mysql_list_tables() | Liefert Tabellennamen, die mit einem einfachen regulären Ausdruck übereinstimmen | 
| mysql_more_results() | Prüft, ob noch weitere Ergebnisse vorhanden sind | 
| mysql_next_result() | Liefert/initiiert das nächste Ergebnis für Mehrfachanweisungen | 
| mysql_num_fields() | Liefert die Anzahl der Spalten einer Ergebnismenge | 
| mysql_num_rows() | Liefert die Anzahl der Zeilen einer Ergebnismenge | 
| mysql_options() | Stellt Verbindungsoptionen für mysql_connect()ein | 
| mysql_ping() | Prüft, ob die Serververbindung funktioniert, und baut bei Bedarf eine neue Verbindung auf | 
| mysql_query() | Führt eine SQL-Anfrage aus, die als auf null endender String angegeben ist. | 
| mysql_real_connect() | Verbindet sich mit einem MySQL Server | 
| mysql_real_escape_string() | Versieht Sonderzeichen in einem String, der in einer SQL-Anweisung benutzt werden soll, mit Escape-Symbolen, wobei der aktuelle Zeichensatz der Verbindung berücksichtigt wird | 
| mysql_real_query() | Führt eine als abgezählter String angegebene SQL-Anfrage aus | 
| mysql_refresh() | Schreibt Tabellen und Caches auf die Platte zurück oder setzt sie zurück | 
| mysql_reload() | Lässt den Server die Berechtigungstabellen neu laden | 
| mysql_rollback() | Rollt die Transaktion zurück | 
| mysql_row_seek() | Findet einen Zeilen-Offset in einer Ergebnismenge anhand des
                Rückgabewerts von mysql_row_tell() | 
| mysql_row_tell() | Liefert die Position des Zeilen-Cursors | 
| mysql_select_db() | Wählt eine Datenbank aus | 
| mysql_server_end() | Finalisiert die Embedded Server-Bibliothek | 
| mysql_server_init() | Initialisiert die Embedded Server-Bibliothek | 
| mysql_set_server_option() | Setzt eine Option für die Verbindung (wie multi-statements) | 
| mysql_sqlstate() | Liefert den SQLSTATE-Fehlercode für den letzten Fehler | 
| mysql_shutdown() | Fährt den Datenbankserver herunter | 
| mysql_stat() | Liefert den Serverstatus als String | 
| mysql_store_result() | Holt eine vollständige Ergebnismenge auf den Client | 
| mysql_thread_id() | Liefert die aktuelle Thread-ID | 
| mysql_thread_safe() | Liefert 1, wenn die Clients als Thread-sicher kompiliert wurden | 
| mysql_use_result() | Initiiert einen zeilenweisen Abruf der Ergebnismenge | 
| mysql_warning_count() | Liefert die Anzahl der Warnungen für die vorangehende SQL-Anweisung | 
Anwendungsprogramme sollten sich an folgende Vorgehensweise halten, wenn sie mit MySQL zusammenarbeiten wollen:
            Sie initialisieren die MySQL-Bibliothek durch Aufruf von
            mysql_library_init(). Die Bibliothek kann
            entweder die
            mysqlclient-C-Clientbibliothek oder die
            mysqld-Embedded Server-Bibliothek sein,
            je nachdem, ob die Anwendung mit dem Flag
            -libmysqlclient oder
            -libmysqld verlinkt worden ist.
          
            Sie initialisieren einen Verbindungs-Handler durch Aufruf
            von mysql_init() und verbinden sich durch
            mysql_real_connect() mit dem Server.
          
Sie geben ihre SQL-Anweisungen und verarbeiten die Ergebnisse. (Im Folgenden wird genauer beschrieben, wie dies getan wird.)
            Sie schließen die Verbindung zum MySQL Server durch Aufruf
            von mysql_close().
          
            Sie beenden die Nutzung der MySQL-Bibliothek durch Aufruf
            von mysql_library_end().
          
        mysql_library_init() und
        mysql_library_end() werden aufgerufen, um die
        MySQL-Bibliothek richtig zu initialisieren und zu finalisieren.
        Für Anwendungen, die mit der Clientbibliothek verlinkt sind,
        bietet diese Funktionen eine verbesserte Speicherverwaltung.
        Wenn Sie mysql_library_end() nicht aufrufen,
        bleibt weiterhin ein Arbeitsspeicherblock reserviert. (Zwar
        belegt die Anwendung deswegen nicht mehr Speicher, aber
        bestimmte Detektoren für Speicherlecks würden sich
        beschweren.) Für Anwendungen, die mit dem Embedded Server
        verlinkt sind, starten und stoppen diese Aufrufe den Server.
      
        mysql_library_init() und
        mysql_library_end() sind in Wirklichkeit
        #define-Symbole und somit äquivalent zu
        mysql_server_init() und
        mysql_server_end(), aber die anderen Namen
        betonen stärker, dass diese Funktionen immer vor und nach der
        Benutzung einer MySQL-Bibliothek aufgerufen werden müssen, egal
        ob die Anwendung die mysqlclient- oder die
        mysqld-Bibliothek verwendet. In älteren
        MySQL-Versionen können Sie stattdessen
        mysql_server_init() und
        mysql_server_end() aufrufen.
      
        Sie können den Aufruf von
        mysql_library_init() auch weglassen, da
        mysql_init() diese Funktion automatisch
        aufruft, wenn es notwendig ist.
      
        Um sich mit dem Server zu verbinden, initialisieren Sie mit
        mysql_init() einen Verbindungs-Handler und
        rufen mysql_real_connect() mit diesem Handler
        (sowie anderen Informationen, wie zum Beispiel Hostname,
        Benutzername und Passwort) auf. Beim Verbinden setzt
        mysql_real_connect() das
        reconnect-Flag (ein Teil der
        MYSQL-Struktur) auf den Wert
        1, wenn die API-Version älter als 5.0.3 ist,
        oder auf 0, wenn sie neuer ist. Wenn dieses
        Flag den Wert 1 hat, bedeutet dies: Falls
        eine Anweisung wegen Verbindungsabbruchs nicht ausgeführt
        werden kann, versucht das System, sich erneut mit dem Server zu
        verbinden, ehe es aufgibt. Seit MySQL 5.0.13 können Sie das
        Verhalten in Bezug auf Neuverbindungen mit der Option
        MYSQL_OPT_RECONNECT von
        mysql_options() steuern. Wenn Sie die
        Verbindung nicht mehr benötigen, beenden Sie sie mit
        mysql_close().
      
        Während eine Verbindung aktiv ist, kann der Client
        SQL-Anweisungen mit mysql_query() oder
        mysql_real_query() an den Server senden. Der
        Unterschied ist der, dass mysql_query() die
        Anfrage als auf null endenden String erwartet, während
        mysql_real_query() mit einem abgezählten
        String rechnet. Wenn der String Binärdaten enthält (die auch
        Nullbytes umfassen können), müssen Sie
        mysql_real_query() verwenden.
      
        Für alle Nicht-SELECT-Anfragen
        (beispielsweise INSERT,
        UPDATE, DELETE) können
        Sie die Anzahl der betroffenen Zeilen durch
        mysql_affected_rows() ermitteln.
      
        Bei SELECT-Anfragen rufen Sie die betroffenen
        Zeilen als Ergebnismenge ab. (Beachten Sie, dass manche
        Anweisungen insofern SELECT-ähnlich sind,
        als sie Zeilen zurückliefern. Dazu gehören
        SHOW, DESCRIBE und
        EXPLAIN. Diese sollten ebenso wie
        SELECT-Anweisungen behandelt werden.)
      
        Ein Client hat zwei Möglichkeiten, mit Ergebnismengen
        umzugehen: Erstens kann er die gesamte Ergebnismenge in einem
        Schwung abholen, indem er
        mysql_store_result() aufruft. Diese Funktion
        holt sich vom Server alle von der Anfrage gelieferten Zeilen und
        speichert sie auf dem Client. Die zweite Möglichkeit besteht
        darin, die Ergebnismenge mit
        mysql_use_result() zeilenweise abzurufen.
        Diese Funktion initialisiert den Datenabruf, holt aber die
        Zeilen vom Server nicht wirklich ab.
      
        In beiden Fällen greifen Sie mit
        mysql_fetch_row() auf die Zeilen zu. Mit
        mysql_store_result() greift sich
        mysql_fetch_row() Zeilen, die vom Server
        bereits abgeholt worden sind. Mit
        mysql_use_result() ruft
        mysql_fetch_row() die jeweilige Zeile selbst
        vom Server. Informationen über den Umfang der Daten in den
        Zeilen liefert Ihnen mysql_fetch_lengths().
      
        Wenn Sie mit einer Ergebnismenge fertig sind, geben Sie mit
        mysql_free_result() ihren Arbeitsspeicher
        wieder frei.
      
        Die beiden Abrufmechanismen ergänzen einander. Clientprogramme
        sollten den Ansatz verfolgen, der für ihre Zwecke am besten
        geeignet ist. In der Praxis wird
        mysql_store_result() von den Clients
        häufiger verwendet.
      
        mysql_store_result() hat einen Vorteil. Da
        bereits alle Zeilen auf den Client geladen wurden, können Sie
        nicht nur der Reihe nach auf sie zugreifen, sondern sich mit
        mysql_data_seek() oder
        mysql_row_seek() in der Ergebnismenge vor-
        und zurückbewegen und auf eine andere Zeilenposition in der
        Ergebnismenge gehen. Sie können überdies mit
        mysql_num_rows() herausfinden, wie viele
        Zeilen die Ergebnismenge hat. Allerdings kann
        mysql_store_result() bei großen
        Ergebnismengen auch viel Speicher belegen, wodurch die Gefahr
        von out-of-memory-Bedingungen wächst.
      
        mysql_use_result() hat den Vorteil, dass der
        Client nicht so viel Arbeitsspeicher für die Ergebnismenge
        benötigt, da er immer nur eine einzige Zeile speichern muss
        (und durch den geringeren Aufwand bei der Zuweisung kann
        mysql_use_result() überdies schneller sein).
        Die Nachteile: Sie müssen jede Zeile schnell verarbeiten, um
        den Server nicht aufzuhalten, und Sie haben keinen beliebigen
        Zugriff auf die Ergebnismenge (sondern können nur sequenziell
        auf die Zeilen zugreifen). Außerdem kennen Sie die Anzahl der
        Zeilen in der Ergebnismenge erst, wenn Sie sie alle abgeholt
        haben. Hinzu kommt, dass Sie sämtliche Zeilen abholen
        müssen, und zwar selbst dann,
        wenn Sie mitten in der Verarbeitung die gesuchten Informationen
        bereits gefunden haben.
      
        Den Clients ermöglicht diese API, auf Anweisungen in
        angemessener Form zu reagieren (also die Zeilen nur nach Bedarf
        abzuholen), ohne zu wissen, ob die Anweisung ein
        SELECT ist. Dies erreichen Sie, indem Sie
        mysql_store_result() nach jeder
        mysql_query() (oder
        mysql_real_query()) aufrufen. Wenn der
        Ergebnismengenaufruf Erfolg hat, war die Anweisung ein
        SELECT und Sie können die Zeilen einlesen.
        Schlägt der Ergebnismengenaufruf fehl, so ermitteln Sie mit
        mysql_field_count(), ob überhaupt ein
        Ergebnis zu erwarten war. Wenn
        mysql_field_count() null zurückliefert,
        ergab die Anweisung keine Daten (war also ein
        INSERT, UPDATE,
        DELETE oder etwas Ähnliches), von denen man
        auch keine Rückgabezeilen erwarten konnte. Wenn
        mysql_field_count() einen von null
        verschiedenen Wert hat, hätte die Anweisung eigentlich Zeilen
        zurückgeben sollen, hat es aber nicht getan. Dies deutet auf
        eine fehlgeschlagene SELECT-Anweisung hin.
        Ein Beispiel finden Sie unter
        mysql_field_count().
      
        Sowohl mysql_store_result() als auch
        mysql_use_result() liefern Ihnen
        Informationen über die Felder, aus denen die Ergebnismenge
        besteht (die Anzahl der Felder, ihre Namen und Typen und so
        weiter). Sie können auf die Feldinformationen in der Zeile
        sequenziell zugreifen, indem Sie wiederholt
        mysql_fetch_field() aufrufen, oder anhand der
        Feldnummer, indem Sie
        mysql_fetch_field_direct() aufrufen. Die
        aktuelle Cursor-Position für das Feld können Sie durch
        mysql_field_seek() ändern. Wenn Sie den
        Feld-Cursor verstellen, wirkt sich das auf nachfolgende
        mysql_fetch_field()-Aufrufe aus. Sie können
        die Feldinformationen auch alle auf einmal abholen, indem Sie
        mysql_fetch_fields() aufrufen.
      
        Um Fehler zu entdecken und zu melden, gibt Ihnen MySQL über die
        Funktionen mysql_errno() und
        mysql_error() Zugriff auf
        Fehlerinformationen. Diese Funktionen geben den Fehlercode oder
        die Fehlermeldung für die zuletzt aufgerufene Funktion zurück,
        die mit oder ohne Erfolg gelaufen sein kann. So können Sie
        ermitteln, wann welcher Fehler aufgetreten ist.
      
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.

