mysqli 拡張機能を使用すると、MySQL 4.1 以降で提供される機能にアクセスできます。
mysqli 拡張機能と永続的接続
mysqli 拡張機能の永続的接続は PHP5.3 で導入されました。 PDO MYSQL および ext/mysql ではすでにサポートが存在します。永続的な接続の背後にある考え方は、クライアント プロセスとデータベース間の接続が、何度も作成され破棄されるのではなく、クライアント プロセスを通じて維持および再利用できるということです。これにより、毎回新しい接続を作成する必要があるオーバーヘッドが軽減され、未使用の接続はキャッシュされ、再利用できるようになります。
mysql 拡張機能とは異なり、mysqli は永続的な接続を開くための特別なメソッドを提供しません。永続的な接続を開く必要がある場合は、接続時にホスト名の前に p: を追加する必要があります。
永続的な接続を使用する場合の問題は、クライアント側で予期しない状態になる可能性があることです。たとえば、クライアントが予期せず終了する前に、テーブル ロックがアクティブになる可能性があります。 永続的な接続を再利用する新しいクライアント プロセスは、接続を「そのまま」取得します。このように、新しいクライアント プロセスは、永続的な接続をより適切に使用するために、可能なクリーンアップ作業を実行する必要があり、プログラマの負担が増加します。
mysqli 拡張機能の永続的接続は、組み込みのクリーンアップ処理コードを提供します。 mysqli によって行われるクリーンアップ作業には以下が含まれます:
アクティブなトランザクションのロールバック
一時テーブルを閉じて削除
テーブルのロックを解除、
セッション変数をリセット
準備されたステートメントを閉じる (PHP でよく発生します)
処理を閉じる プログラム
GET_LOCK() で取得したロックを解放します
これにより、接続プールから返された永続接続が、クライアント プロセスが使用する前にクリーンな状態になることが保証されます。
mysqli 拡張機能は、C-API 関数 mysql_change_user() を自動的に呼び出すことで、このクリーンアップ作業を完了します。
自動クリーニングの機能には長所と短所があります。利点は、クリーンアップ コードが自動的に呼び出されるため、プログラマが追加のクリーンアップ コードについて心配する必要がなくなることです。ただし、接続が接続プールから返されるたびにクリーンアップ コードを実行する必要があるため、コードが遅くなる可能性があるという欠点があります。
この自動クリーニング コードは、php のコンパイル時に MYSQLI_NO_CHANGE_USER_ON_PCONNECT を定義することでオフにできます。
mysqli 拡張機能は、Mysql ネイティブ ドライバーまたは Mysql クライアント ライブラリ (libmysql) を使用する場合の永続的な接続をサポートします。
MySQLi クラス
は、PHP と Mysql データベース間の接続を表します。
mysqli::$affected_rows — 以前の MySQL 操作で影響を受けた行の数を取得します
mysqli::autocommit — このデータベース接続の自動コマンドコミットトランザクションモードをオンまたはオフにします
mysqli::begin_transaction — トランザクションを開始します
mysqli::change_user — 指定されたデータベース接続のユーザーを変更します
mysqli::character_set_name — 現在のデータベース接続のデフォルトの文字エンコーディングを返します
mysqli::$client_info — MySQL クライアント情報を取得します
mysqli::$ client_version — MySQL クライアントのバージョンを文字列として返す
mysqli::close — 以前に開かれたデータベース接続を閉じる
mysqli::commit — トランザクションをコミットする
mysqli::$connect_errno — 最後の接続呼び出しからのエラー コードを返す
mysqli: :$connect_error — 最後の接続エラーの文字列説明を返します
mysqli::__construct — MySQL サーバーへの新しい接続を開きます
mysqli::debug — デバッグ操作を実行します
mysqli::dump_debug_info — デバッグを出力します情報をログに記録します
mysqli::errno — 最新の関数呼び出しのエラー コードを返します
mysqli::$error_list — 最後に実行されたコマンドからのエラーのリストを返します
mysqli::$error — 文字列の説明を返します最後のエラーの
mysqli::$field_count — 最新のクエリの列数を返します
mysqli::get_charset — 文字セット オブジェクトを返します
mysqli::get_client_info — MySQL クライアント情報を取得します
mysqli_get_client_stats — 戻り値クライアントのプロセスごとの統計
mysqli_get_client_version — MySQL クライアントのバージョンを整数として返します
mysqli::get_connection_stats — クライアント接続に関する統計を返します
mysqli::$host_info — 使用される接続のタイプを表す文字列を返します
mysqli ::$protocol_version — 使用される MySQL プロトコルのバージョンを返します
mysqli::$server_info — MySQL サーバーのバージョンを返します
mysqli::$server_version — MySQL サーバーのバージョンを整数として返します
mysqli: :get_warnings — SHOW WARNINGS の結果を取得します
mysqli::$info — 最後に実行されたクエリに関する情報を取得します
mysqli::init — MySQLi を初期化し、mysqli_real_connect() で使用するリソースを返します
mysqli::$insert_id — 最後のクエリで使用された自動生成された ID を返します
mysqli::kill — サーバーに MySQL スレッドを強制終了するように要求します
mysqli::more_results — マルチクエリからのクエリ結果がさらにあるかどうかを確認しますquery
mysqli::multi_query — データベースに対してクエリを実行します
mysqli::next_result — multi_query からの次の結果を準備します
mysqli::options — オプションを設定します
mysqli::ping — サーバー接続に ping を実行するか、接続がダウンした場合は再接続します
mysqli::poll — 接続をポーリングします
mysqli::prepare — SQL ステートメントを実行する準備をします
mysqli::query — 对数据库执行一次查询
mysqli::real_connect— mysql サーバーへの接続
mysqli::real_escape_string — 接続の現在の文字セットを考慮して、SQL ステートメントで使用する文字列内の特殊文字をエスケープします
mysqli::real_query — 実行一个mysql查询
mysqli:: reap_async_query - asyncquery
mysqli::更新の結果を取得します - リフレッシュ
mysqli:: release_savepoinクエリタイプ
mysqli::savepoint — 名前付きトランザクションセーブポイントを設定します
mysqli::select_db — データベース库蟥询の默认データベース库
mysqli::send_query — 送信要求并返结結果
mysqli::set_charset — 設定默认文字コード
mysqli::set_local_infile_default — ローカル infile の読み込みコマンドのユーザー定義ハンドラーの設定を解除します
mysqli::set_local_infile_handler — LOAD DATA LOCAL INFILE コマンドのコールバック関数を設定します
mysqli::$sqlstate — 以前の MySQL 操作から SQLSTATE エラーを返します
mysqli::ssl_set — SSL を使用して安全な接続を確立するために使用されます
mysqli::stat — 現在のシステムステータスを取得します
mysqli::stmt_init — 初歩化一条语句并mysqli_stmt_prepare(调用) のオブジェクトを返します
mysqli ::store_result — 最後のクエリからの結果セットを転送します
mysqli::$thread_id — 現在の接続のスレッド ID を返します
mysqli::thread_safe — 返されるかどうかが線程安全的
mysqli::use_result — を開始します結果セットの取得
mysqli::$warning_count — 指定されたリンクに対する最後のクエリからの警告の数を返します
MySQLi_STMT 类
は準備された句を表します。
mysqli_stmt::$affected_rows — 変更された行の合計数を返します、削除された、または最後に実行されたステートメントによって挿入されました
mysqli_stmt::attr_get — ステートメント属性の現在の値を取得するために使用されます
mysqli_stmt::attr_set — 準備されたステートメントの動作を変更するために使用されます
mysqli_stmt::bind_param —変数をパラメータとして準備されたステートメントにバインドします
mysqli_stmt::bind_result — 結果を保存するために変数を準備されたステートメントにバインドします
mysqli_stmt::close — 準備されたステートメントを閉じます
mysqli_stmt::data_seek — ステートメントの結果の任意の行をシークしますset
mysqli_stmt::$errno — 最新のステートメント呼び出しのエラー コードを返します
mysqli_stmt::$error_list — 最後に実行されたステートメントからのエラーのリストを返します
mysqli_stmt::$error — 文字列の説明を返します最後のステートメントエラー
mysqli_stmt::execute — 準備されたクエリを実行します
mysqli_stmt::fetch — 準備されたステートメントからバインドされた変数に結果をフェッチします
mysqli_stmt::$field_count — 指定されたステートメント内のフィールドの数を返します
mysqli_stmt::free_result — 指定されたステートメント ハンドルの保存された結果メモリを解放します
mysqli_stmt::get_result — 準備されたステートメントから結果セットを取得します
mysqli_stmt::get_warnings — SHOW WARNINGS の結果を取得します
mysqli_stmt::$insert_id — 取得前の INSERT 操作から生成された ID
mysqli_stmt::more_results — 複数のクエリからさらにクエリ結果があるかどうかを確認します
mysqli_stmt::next_result — 複数のクエリから次の結果を読み取ります
mysqli_stmt::$num_rows — Returnステートメントの結果セット内の行数
mysqli_stmt::$param_count — 指定されたステートメントのパラメーターの数を返します
mysqli_stmt::prepare — SQL ステートメントを実行用に準備します
mysqli_stmt::reset — 準備されたステートメントをリセットします
mysqli_stmt::result_metadata — 準備されたステートメントから結果セットのメタデータを返します
mysqli_stmt::send_long_data — データをブロックで送信します
mysqli_stmt::$sqlstate — 前のステートメント操作からの SQLSTATE エラーを返します
mysqli_stmt::store_result — 転送結果です準備されたステートメントから設定します
mysqli_result类
代表一データシート库查询中取得結果集
mysqli_result::$current_field — 結果ポインターの現在のフィールド オフセットを取得します
mysqli_result::data_seek — 結果ポインターを任意の行に調整します結果として
mysqli_result::fetch_all — すべての結果行を連想配列、数値配列、またはその両方としてフェッチします
mysqli_result::fetch_array — 結果行を連想配列、数値配列、またはその両方としてフェッチします
mysqli_result::fetch_assoc — フェッチ結果行を連想配列として返します
mysqli_result::fetch_field_direct — 単一フィールドのメタデータをフェッチします
mysqli_result::fetch_field — 結果セット内の次のフィールドを返します
mysqli_result::fetch_fields — を表すオブジェクトの配列を返します結果セット内のフィールド
mysqli_result::fetch_object — 結果セットの現在の行をオブジェクトとして返します
mysqli_result::fetch_row — 結果行を列挙型配列として取得します
mysqli_result::$field_count — 数値を取得します結果内のフィールドの数
mysqli_result::field_seek — 指定されたフィールドのオフセットへの結果ポインターを設定します
mysqli_result::free — 結果に関連付けられたメモリを解放します
mysqli_result::$lengths — の列の長さを返します結果セットの現在の行
mysqli_result::$num_rows — 結果の行数を取得します
MySQLi_Driver类
MySQLi 驱动.
client_info
客户端API头バージョン(比例:(string)"5.1. 49")
client_version
客户端バージョン本(比如:(int)50149)
driver_version
Mysqli驱动バージョン本(比如:(int)101009)
埋め込み
かどうか
再接続
許可または再接続を禁止します (INI 命令内の mysqli.reconnect を参照) , MYSQLI_REPORT_ALL または MYSQLI_REPORT_STRICT (错误抛出注意: MYSQLI_REPORT_ERROR と組み合わせて使用する必要があります)、MYSQLI_REPORT_ERROR (MYSQL の報告) および MYSQLI_REPORT_INDEX (インデックスに関連する報告) の組み合わせ。 embedded_server_end — 組み込みサーバーを停止します
mysqli_driver::embedded_server_start —組み込みサーバーを初期化して起動します
message
メッセージ文字列
sqlstate SQL状態errno
错误编号mysqli_warning::__construct — __construct の目的
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::__con struct
mysqli::disable_reads_from_master — マスターからの読み取りを無効にする
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_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_options の名前
mysqli_slave_query —主/从机制中强制在从机上执行一查询

INNODBは、レドログと非論的なものを使用して、データの一貫性と信頼性を確保しています。 1.レドログは、クラッシュの回復とトランザクションの持続性を確保するために、データページの変更を記録します。 2.Undologsは、元のデータ値を記録し、トランザクションロールバックとMVCCをサポートします。

説明コマンドのキーメトリックには、タイプ、キー、行、および追加が含まれます。 1)タイプは、クエリのアクセスタイプを反映しています。値が高いほど、constなどの効率が高くなります。 2)キーは使用されているインデックスを表示し、nullはインデックスがないことを示します。 3)行はスキャンされた行の数を推定し、クエリのパフォーマンスに影響します。 4)追加の情報を最適化する必要があるというFilesortプロンプトを使用するなど、追加情報を提供します。

Temporaryを使用すると、MySQLクエリに一時テーブルを作成する必要があることが示されています。これは、異なる列、またはインデックスされていない列を使用して順番に一般的に見られます。インデックスの発生を回避し、クエリを書き直し、クエリのパフォーマンスを改善できます。具体的には、expliect出力に使用を使用する場合、MySQLがクエリを処理するために一時テーブルを作成する必要があることを意味します。これは通常、次の場合に発生します。1)個別またはグループビーを使用する場合の重複排除またはグループ化。 2)Orderbyに非インデックス列が含まれているときに並べ替えます。 3)複雑なサブクエリを使用するか、操作に参加します。最適化方法には以下が含まれます。1)OrderbyとGroupB

MySQL/INNODBは、4つのトランザクション分離レベルをサポートしています。 1.ReadunCommittedは、知らないデータを読み取ることができます。 2。読み込みは汚い読み取りを回避しますが、繰り返しのない読みが発生する可能性があります。 3. RepeatablerEadはデフォルトレベルであり、汚い読み取りと非回復不可能な読みを避けますが、幻の読み取りが発生する可能性があります。 4. Serializableはすべての並行性の問題を回避しますが、同時性を低下させます。適切な分離レベルを選択するには、データの一貫性とパフォーマンス要件のバランスをとる必要があります。

MySQLは、Webアプリケーションやコンテンツ管理システムに適しており、オープンソース、高性能、使いやすさに人気があります。 1)PostgreSQLと比較して、MySQLは簡単なクエリと高い同時読み取り操作でパフォーマンスが向上します。 2)Oracleと比較して、MySQLは、オープンソースと低コストのため、中小企業の間でより一般的です。 3)Microsoft SQL Serverと比較して、MySQLはクロスプラットフォームアプリケーションにより適しています。 4)MongoDBとは異なり、MySQLは構造化されたデータおよびトランザクション処理により適しています。

MySQLインデックスのカーディナリティは、クエリパフォーマンスに大きな影響を及ぼします。1。高いカーディナリティインデックスは、データ範囲をより効果的に狭め、クエリ効率を向上させることができます。 2。低カーディナリティインデックスは、完全なテーブルスキャンにつながり、クエリのパフォーマンスを削減する可能性があります。 3。ジョイントインデックスでは、クエリを最適化するために、高いカーディナリティシーケンスを前に配置する必要があります。

MySQL学習パスには、基本的な知識、コアの概念、使用例、最適化手法が含まれます。 1)テーブル、行、列、SQLクエリなどの基本概念を理解します。 2)MySQLの定義、作業原則、および利点を学びます。 3)インデックスやストアドプロシージャなどの基本的なCRUD操作と高度な使用法をマスターします。 4)インデックスの合理的な使用や最適化クエリなど、一般的なエラーのデバッグとパフォーマンス最適化の提案に精通しています。これらの手順を通じて、MySQLの使用と最適化を完全に把握できます。

MySQLの実際のアプリケーションには、基本的なデータベース設計と複雑なクエリの最適化が含まれます。 1)基本的な使用法:ユーザー情報の挿入、クエリ、更新、削除など、ユーザーデータの保存と管理に使用されます。 2)高度な使用法:eコマースプラットフォームの注文や在庫管理など、複雑なビジネスロジックを処理します。 3)パフォーマンスの最適化:インデックス、パーティションテーブル、クエリキャッシュを使用して合理的にパフォーマンスを向上させます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

WebStorm Mac版
便利なJavaScript開発ツール
