ホームページ >バックエンド開発 >PHPチュートリアル >Mysqliの基礎知識
私が PHP を学び始めたとき、多くの人が使用するデータベースは MySQL であり、データベースに接続するための拡張機能は MySQL 拡張機能が最初の選択肢だったと思います。しかし、PHP のバージョンが向上したことで、MySQL 拡張機能が使用されました。徐々に MySQL と PDO に置き換えられています。 mysql 関数を使用する際の非推奨: mysql 拡張機能は非推奨であり、将来削除される予定です。代わりに mysqli または PDO を使用してください。 mysqli 拡張機能を学ぶことが不可欠です。
mysql拡張機能と比較すると、mysqli拡張機能はオブジェクト指向とプロセス指向のメソッドをサポートし、前処理をサポートし、トランザクション処理をサポートし、mysqlよりも高速です。この記事ではmysqliの基本的な簡単なオブジェクト指向操作を中心に紹介します。
Mysqli のインストール構成
mysqli のインストール構成は他の構成と同じです。まず、php_mysqli.dll ファイルが ext フォルダー (通常は存在します) と php ディレクトリに存在することを確認します。 .ini ファイル「extension=php_mysqli.dll」行の前の「;」を削除し、構成ファイルで extension/span>
を確認する方法。
実際、mysqli拡張機能の機能を利用して利用できるかどうかを確認するのが最も直接的な方法です。例えば、データベースに接続できるかどうかで拡張機能がインストールされているかどうかを判断できます。言うまでもなく、接続が成功した場合はインストールされますが、接続が失敗した場合は、バックアップ計画があるかどうかを明確に知ることができます。利用可能です。
もちろん、extension_loaded('mysqli')を使用してmysqli拡張機能がロードされているかどうかを判断することもできますし、get_loaded_extensions()を使用してどの拡張機能がロードされているかを取得することもできます。
オブジェクト指向の mysqli の使い方
mysql の拡張機能を使ったことのある開発者にとって、mysqli はオブジェクト指向なのかプロセス指向なのか非常に分かりやすく、既視感を感じます。特定の属性メソッドについては、公式 PHP マニュアル http://php.net/manual/zh/mysqli.summary.php を参照してください。以下では、コードの一部を通じて mysqli の使用方法を説明します。
この例で実行されるテーブルは、id と title の 2 つのフィールドを持つテスト テーブルです。
<span><?<span>php </span><span>//</span><span>配置文件完成相关配置</span><span>define</span>("HOST", "localhost"<span>); </span><span>define</span>("USER", 'root'<span>); </span><span>define</span>("PWD", ''<span>); </span><span>define</span>("DB", 'yii'<span>); </span><span>//</span><span>建立连接,生成mysqli实例对象。</span><span>$mysqli</span>=<span>new</span> Mysqli(HOST,USER,PWD,<span>DB); </span><span>if</span> (<span>$mysqli</span>-><span>connect_errno) { </span>"Connect Error:".<span>$mysqli</span>-><span>connect_error; } </span><span>//</span><span>设置默认的字符集</span><span>$mysqli</span>->set_charset('utf8'<span>); </span><span>$sql</span>="select * from test"<span>; </span><span>//</span><span>生成mysql_result对象</span><span>$result</span>=<span>$mysqli</span>->query(<span>$sql</span><span>); </span><span>//</span><span>返回二维关联数组,参数同理可以设定为MYSQLI_NUM返回索引数组,或者MYSQLI_BOTH二者兼有。</span><span>$rows</span>=<span>$result</span>-><span>fetch_all(MYSQLI_ASSOC); </span><span>//</span><span>将结果指针调整到任意行</span><span>$result</span>->data_seek(2<span>); </span><span>$row</span>=<span>$result</span>-><span>fetch_row(); </span><span>//</span><span>$row=$result->fetch_array(); //$row=$result->fetch_assoc(); //$row=$result->fetch_object(); //释放结果集</span><span>$result</span>-><span>free(); </span><span>//</span><span>$result->free_result(); //$result->close(); //关闭连接</span><span>$mysqli</span>->close();</span>
上記のコードは、クエリ結果セットを走査せずに mysqli を使用してクエリを実行する方法を示しているだけで、配列内のデータを取得することは難しくありません。
$mysqli->query() によって実行される SQL ステートメントは、クエリが正常に実行された場合、SELECT、SHOW、DESCRIBE または EXPLAIN、およびその他のクエリの場合に mysqli_result オブジェクトを返すことに注意してください。 TRUE,执行失败则都返回false。
INSERT、UPDATE、および DELETE 操作を実行するときに、$mysqli->affected_rows を呼び出して、影響を受けるレコードの数を取得できます
$mysqli->affected_rows 戻り値 -1 は、それを示します。 SQL ステートメントに問題があり、0 は影響がないことを示し、その他の値は影響を受けるレコードの数を示します。
複数の SQL ステートメントの実行、前処理、トランザクション処理も mysqli の重要な側面であり、これについては後のエッセイで書きます。
追伸: 技術的なブログを初めて書くのはとても緊張しますか?不適切な表現も多々ありますが、まだまだご意見頂ければ幸いです~
以上、Mysqli の基本的な知識をその側面も含めて紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。