Die MySQLi-Erweiterung ermöglicht uns den Zugriff auf die von MySQL 4.1 und höher bereitgestellten Funktionen.
MySQL-Erweiterung und dauerhafte Verbindung
Die dauerhafte Verbindung der MySQL-Erweiterung wurde in PHP5.3 eingeführt. Unterstützung gibt es bereits in PDO MYSQL und ext/mysql. Die Idee hinter dauerhaften Verbindungen besteht darin, dass die Verbindung zwischen dem Clientprozess und der Datenbank über einen Clientprozess aufrechterhalten und wiederverwendet werden kann, anstatt mehrmals erstellt und zerstört zu werden. Dies reduziert den Aufwand, der entsteht, wenn jedes Mal eine neue Verbindung erstellt werden muss, und ungenutzte Verbindungen werden zwischengespeichert und können wiederverwendet werden.
Im Gegensatz zur MySQL-Erweiterung bietet MySQL keine spezielle Methode zum Öffnen einer dauerhaften Verbindung. Wenn Sie eine dauerhafte Verbindung herstellen müssen, müssen Sie beim Herstellen der Verbindung p: vor dem Hostnamen hinzufügen.
Das Problem bei der Verwendung dauerhafter Verbindungen besteht darin, dass sie sich auf der Clientseite in einem unvorhersehbaren Zustand befinden können. Beispielsweise könnte eine Tabellensperre aktiviert werden, bevor der Client unerwartet beendet wird. Ein neuer Clientprozess, der die dauerhafte Verbindung wiederverwendet, erhält die Verbindung „wie sie ist“. Auf diese Weise muss ein neuer Client-Prozess alle möglichen Aufräumarbeiten durchführen, um dauerhafte Verbindungen besser zu nutzen, was die Belastung für den Programmierer erhöht.
Die dauerhafte Verbindung der MySQLi-Erweiterung bietet integrierten Bereinigungsverarbeitungscode. Die von mysqli durchgeführte Bereinigungsarbeit umfasst:
Rollback aktiver Transaktionen
Schließen und Löschen der temporären Tabelle
Entsperren der Tabelle,
Sitzungsvariablen zurücksetzen
Vorbereitete Anweisung schließen (kommt häufig in PHP vor)
Handler schließen
Die über GET_LOCK() erworbene Sperre freigeben
Dadurch wird sichergestellt, dass die Verbindung A dauerhaft ist Die vom Pool zurückgegebene Verbindung befindet sich in einem sauberen Zustand, bevor der Clientprozess sie verwendet.
Die mysqli-Erweiterung schließt diese Aufräumarbeiten ab, indem sie automatisch die C-API-Funktion mysql_change_user() aufruft.
Die automatische Reinigungsfunktion hat Vor- und Nachteile. Der Vorteil besteht darin, dass sich Programmierer nicht mehr um zusätzlichen Bereinigungscode kümmern müssen, da dieser automatisch aufgerufen wird. Der Nachteil besteht jedoch darin, dass der Code möglicherweise langsamer ist, da der Bereinigungscode jedes Mal ausgeführt werden muss, wenn eine Verbindung aus dem Verbindungspool zurückgegeben wird.
Dieser automatische Reinigungscode kann durch die Definition von MYSQLI_NO_CHANGE_USER_ON_PCONNECT beim Kompilieren von PHP deaktiviert werden.
Mysqli-Erweiterung unterstützt dauerhafte Verbindungen bei Verwendung von Mysql Native Driver oder Mysql Client Library (libmysql).
MySQLi-Klasse
stellt eine Verbindung zwischen PHP und der MySQL-Datenbank dar.
mysqli::$affected_rows – Ruft die Anzahl der betroffenen Zeilen in einem vorherigen MySQL-Vorgang ab
mysqli::autocommit – Schaltet den automatischen Befehls-Commit-Transaktionsmodus dieser Datenbankverbindung ein oder aus
mysqli::begin_transaction – Startet eine Transaktion
mysqli::change_user – Ändert den Benutzer der angegebenen Datenbankverbindung
mysqli::character_set_name – Gibt die Standardzeichenkodierung der aktuellen zurück Datenbankverbindung
mysqli::$client_info – MySQL-Client-Informationen abrufen
mysqli::$client_version – Gibt die MySQL-Client-Version als String zurück
mysqli::close – Schließen die zuvor geöffnete Datenbankverbindung
mysqli::commit – Eine Transaktion festschreiben
mysqli::$connect_errno – Gibt den Fehlercode vom letzten Verbindungsaufruf zurück
mysqli::$connect_error – Gibt eine Zeichenfolgenbeschreibung des letzten Verbindungsfehlers zurück
mysqli::__construct – Öffnet eine neue Verbindung zum MySQL-Server
mysqli::debug – Führt Debugging-Vorgänge durch
mysqli ::dump_debug_info – Debugging-Informationen in das Protokoll ausgeben
mysqli::errno – Gibt den Fehlercode des letzten Funktionsaufrufs zurück
mysqli::$error_list – Gibt eine Liste der Fehler aus dem zurück letzter ausgeführter Befehl
mysqli::$error – Gibt eine Zeichenfolgenbeschreibung des letzten Fehlers zurück
mysqli::$field_count – Gibt die Anzahl der Spalten für die letzte Abfrage zurück
mysqli::get_charset – Gibt ein Zeichensatzobjekt zurück
mysqli::get_client_info – MySQL-Client-Informationen abrufen
mysqli_get_client_stats – Gibt Client-Pro-Prozess-Statistiken zurück
mysqli_get_client_version – Gibt die zurück MySQL-Client-Version als Ganzzahl
mysqli::get_connection_stats – Gibt Statistiken über die Client-Verbindung zurück
mysqli::$host_info – Gibt eine Zeichenfolge zurück, die den Typ der verwendeten Verbindung darstellt
mysqli::$protocol_version – Gibt die Version des verwendeten MySQL-Protokolls zurück
mysqli::$server_info – Gibt die Version des MySQL-Servers zurück
mysqli::$server_version – Gibt die Version des zurück MySQL-Server als Ganzzahl
mysqli::get_warnings – Ergebnis von SHOW WARNINGS abrufen
mysqli::$info – Ruft Informationen über die zuletzt ausgeführte Abfrage ab
mysqli:: init – Initialisiert MySQLi und gibt eine Ressource zur Verwendung mit mysqli_real_connect()
zurückmysqli::$insert_id – Gibt die automatisch generierte ID zurück, die in der letzten Abfrage verwendet wurde
mysqli::kill – Fordert den Server auf, einen MySQL-Thread zu beenden
mysqli::more_results – Überprüfen wenn es weitere Abfrageergebnisse aus einer Mehrfachabfrage gibt
mysqli::multi_query – Führt eine Abfrage in der Datenbank durch
mysqli::next_result – Bereiten Sie das nächste Ergebnis von multi_query vor
mysqli::options – Optionen festlegen
mysqli::ping – Pingt eine Serververbindung an oder versucht, die Verbindung wiederherzustellen, wenn die Verbindung unterbrochen ist
mysqli::poll – Verbindungen abfragen
mysqli::prepare – Bereiten Sie eine SQL-Anweisung für die Ausführung vor
mysqli::query – 对数据库执行一次查询
mysqli::real_connect – Öffnet eine Verbindung zu einem MySQL-Server
mysqli::real_escape_string – Escape-Sonderzeichen in einer Zeichenfolge zur Verwendung in einer SQL-Anweisung unter Berücksichtigung des aktuellen Zeichensatzes der Verbindung
mysqli::real_query – 执行一个mysql查询
mysqli::reap_async_query – Ergebnis einer asynchronen Abfrage abrufen
mysqli::refresh – Aktualisiert
mysqli::release_savepoint – Setzt eine Transaktion auf den benannten Sicherungspunkt zurück
mysqli: :rollback – 回退当前事务
mysqli::rpl_query_type – Gibt den RPL-Abfragetyp zurück
mysqli::savepoint – Setzt einen benannten Transaktionsspeicherpunkt
mysqli::select_db – 选择用于数据库查询的默认数据库
mysqli::send_query — 发送请求并返回结果
mysqli::set_charset — 设置默认字符编码
mysqli::set_local_infile_default – Deaktiviert Benutzerdefinierter Handler für den Befehl „load local infile“
mysqli::set_local_infile_handler – Callback-Funktion für den Befehl LOAD DATA LOCAL INFILE festlegen
mysqli::$sqlstate – Gibt den SQLSTATE-Fehler aus dem vorherigen MySQL-Vorgang zurück
mysqli::ssl_set – Wird zum Herstellen sicherer Verbindungen mit SSL verwendet
mysqli::stat – Ruft den aktuellen Systemstatus ab
mysqli::stmt_init – 初始化一条语句并返回一个用于mysqli_stmt_prepare(调用)的对象
mysqli::store_result – Überträgt einen Ergebnissatz aus der letzten Abfrage
mysqli::$thread_id – Gibt die Thread-ID für die aktuelle Verbindung zurück
mysqli::thread_safe – 返回是否是线程安全的
mysqli::use_result – Initiieren Sie einen Ergebnismengenabruf
mysqli::$warning_count – Gibt die Anzahl der Warnungen aus der letzten Abfrage zurück für den angegebenen Link
MySQLi_STMT类
代表一个prepared语句。
mysqli_stmt::$affected_rows – Gibt die Gesamtzahl der Zeilen zurück, die zuletzt geändert, gelöscht oder eingefügt wurden ausgeführte Anweisung
mysqli_stmt::attr_get – Wird verwendet, um den aktuellen Wert eines Anweisungsattributs abzurufen
mysqli_stmt::attr_set – Wird verwendet, um das Verhalten einer vorbereiteten Anweisung zu ändern
mysqli_stmt ::bind_param – Bindet Variablen als Parameter an eine vorbereitete Anweisung
mysqli_stmt::bind_result – Bindet Variablen an eine vorbereitete Anweisung zur Ergebnisspeicherung
mysqli_stmt::close – Schließt eine vorbereitete Anweisung
mysqli_stmt::data_seek – Sucht nach einer beliebigen Zeile im Anweisungsergebnissatz
mysqli_stmt::$errno – Gibt den Fehlercode für den letzten Anweisungsaufruf zurück
mysqli_stmt::$error_list – Gibt eine Liste der Fehler der zuletzt ausgeführten Anweisung zurück
mysqli_stmt::$error – Gibt eine Zeichenfolgenbeschreibung für den Fehler der letzten Anweisung zurück
mysqli_stmt::execute – Führt eine vorbereitete Abfrage aus
mysqli_stmt::fetch – Ergebnisse aus einer vorbereiteten Anweisung in die gebundenen Variablen abrufen
mysqli_stmt::$field_count – Gibt die Anzahl der Felder in der angegebenen Anweisung zurück
mysqli_stmt::free_result – Gibt frei gespeicherter Ergebnisspeicher für das angegebene Anweisungshandle
mysqli_stmt::get_result – Ruft eine Ergebnismenge aus einer vorbereiteten Anweisung ab
mysqli_stmt::get_warnings – Ergebnis von SHOW WARNINGS abrufen
mysqli_stmt ::$insert_id – Ruft die aus der vorherigen INSERT-Operation generierte ID ab
mysqli_stmt::more_results – Prüft, ob es weitere Abfrageergebnisse aus einer Mehrfachabfrage gibt
mysqli_stmt::next_result – Liest die nächste Ergebnis einer Mehrfachabfrage
mysqli_stmt::$num_rows – Gibt die Anzahl der Zeilen im Ergebnissatz der Anweisungen zurück
mysqli_stmt::$param_count – Gibt die Anzahl der Parameter für die angegebene Anweisung zurück
mysqli_stmt::prepare – Bereiten Sie eine SQL-Anweisung für die Ausführung vor
mysqli_stmt::reset – Setzt eine vorbereitete Anweisung zurück
mysqli_stmt::result_metadata – Gibt Ergebnissatz-Metadaten aus einer vorbereiteten Anweisung zurück
mysqli_stmt::send_long_data – Daten in Blöcken senden
mysqli_stmt::$sqlstate – Gibt einen SQLSTATE-Fehler aus der vorherigen Anweisungsoperation zurück
mysqli_stmt::store_result – Überträgt einen Ergebnissatz aus einer vorbereiteten Aussage
mysqli_result类
代表从一个数据库查询中获取的结果集
mysqli_result::$current_field – Aktuellen Feldoffset eines Ergebniszeigers abrufen
mysqli_result:: data_seek – Passt den Ergebniszeiger auf eine beliebige Zeile im Ergebnis an
mysqli_result::fetch_all – Ruft alle Ergebniszeilen als assoziatives Array, numerisches Array oder beides ab
mysqli_result::fetch_array – Rufen Sie eine Ergebniszeile als assoziatives, numerisches Array oder beides ab
mysqli_result::fetch_assoc – Rufen Sie eine Ergebniszeile als assoziatives Array ab
mysqli_result::fetch_field_direct – Rufen Sie Metadaten für a ab einzelnes Feld
mysqli_result::fetch_field – Gibt das nächste Feld im Ergebnissatz zurück
mysqli_result::fetch_fields – Gibt ein Array von Objekten zurück, die die Felder in einem Ergebnissatz darstellen
mysqli_result::fetch_object – Gibt die aktuelle Zeile einer Ergebnismenge als Objekt zurück
mysqli_result::fetch_row – Ruft eine Ergebniszeile als Aufzählungsarray ab
mysqli_result::$field_count – Ruft die Zahl ab von Feldern in einem Ergebnis
mysqli_result::field_seek – Ergebniszeiger auf einen angegebenen Feldoffset setzen
mysqli_result::free – Gibt den mit einem Ergebnis verknüpften Speicher frei
mysqli_result: :$lengths – Gibt die Längen der Spalten der aktuellen Zeile im Ergebnissatz zurück
mysqli_result::$num_rows – Ruft die Anzahl der Zeilen in einem Ergebnis ab
MySQLi_Driver类
MySQLi 驱动.
client_info
客户端API头版本(比如:(string)"5.1.49")
client_version
客户端版本(比如:(int)50149)
driver_version
Mysqli驱动版本(比如:(int)1 01009 )
eingebettet
是否开启了MySQLi嵌入式支持.
reconnect
允许或阻止重连接(查看INI指令中的mysqli.reconnect)
report_mode
设置为MYSQLI_REPORT_OFF, MYSQLI_REPORT_ALL或者 MYSQLI_REPORT_STRICT (为错误抛出异常,译注:需要和MYSQLI_REPORT_ERROR联合使用), MYSQLI_REPORT_ERROR (报告MYSQL错误)和 MYSQLI_REPORT_INDEX (报告索引相关的错误)的任意组合.
mysqli_driver:: embedded_server_end – Stoppen Sie den eingebetteten Server
mysqli_driver::embedded_server_start – Initialisieren und starten Sie den eingebetteten Server
mysqli_driver::$report_mode – Aktiviert oder deaktiviert interne Berichtsfunktionen
MySQLi_Warning类
代表一个Mysql警告.
message
消息字符串
sqlstate
SQL状态
errno
错误编号
mysqli_warning::__construct – Der __construct-Zweck
mysqli_warning::next – Der nächste Zweck
mysqli_sql_Exception类
mysqli异常处理类
mysqli_sql_exception extends RuntimeException { /* 属性 */ protected string $sqlstate ; /* 继承的属性 */ protected string $message ; protected int $code ; protected string $file ; protected int $line ; }
别名和过时的Mysqli. 函数
mysqli_bind_param — mysqli_stmt_bind_param的别名
mysqli_bind_result — mysqli_stmt_bind_result的别名
mysqli_client_encoding — mysqli_character_set_name的别名
mysqli_connect — 别名 mysqli::__construct
mysqli::disable_reads_from_master – Lesevorgänge vom Master deaktivieren
mysqli_disable_rpl_parse – 禁用RPL解析
mysqli_enable_reads_from_master – 开启从主机读取
mysqli_enable_rpl_parse – 开启RPL解析
mysqli_escape_string – 别名 mysqli_real_escape_string
mysqli_execute – mysqli_stmt_execute的别名
mysqli_fetch — mysqli_stmt_fetch的别名.
mysqli_get_cache_stats — 返回客户端Zval缓存统计信息
mysqli_get_metadata — mysqli_stmt_result_metadata的别名
mysqli_master_query — 在主/从机制中强制在主机中执行一个查询
mysqli_param_count — mysqli_stmt_param_count的别名
mysqli_report — 开启或禁用(Mysql)内部(错误)报告函数
mysqli_rpl_parse_enabled — 检查是否开启了RPL解析
mysqli_rpl_probe — RPL探测
mysqli_send_long_data — mysqli_stmt_send_long_data的别名
mysqli_set_opt — mysqli_ Optionen的别名
mysqli_slave_query – 在主/从机制中强制在从机上执行一个查询