目次
MySQLi とは " >MySQLi とは
プロセス指向
オブジェクト指向" >オブジェクト指向
面向对象和面向过程混用" >面向对象和面向过程混用
总结" >总结
ホームページ バックエンド開発 PHPの問題 3 分で PHP の MySQLi を理解できます

3 分で PHP の MySQLi を理解できます

Jun 24, 2021 pm 04:30 PM
php

この記事から始めて、MySQLi 拡張機能について学びます。 MySQL (オリジナル) 拡張機能は、私たちの多くが初めて PHP を学習し始めるときにデータベースに接続するための入門講師であると言えます。プロシージャル コードを使用してデータベースを操作する場合は、mysqli 拡張機能のみを使用できます。

3 分で PHP の MySQLi を理解できます

PDO の学習は終了しました。この記事から、PDO 以外のコア MySQLi 拡張機能である別の MySQL 拡張機能について学び続けます。おそらく、その祖先である MySQL (オリジナル) 拡張機能は、私たちの多くが最初に PHP を学習し始めたときに、データベースに接続するための頼りになるガイドでした。しかし、時代の変化とともに、MySQL (オリジナル) 拡張機能は PHP7 では完全に放棄されました。プロシージャル コードを使用してデータベースを操作する場合は、mysqli 拡張機能のみを使用できます。もちろん、mysqli 拡張機能はオブジェクト指向の記述もサポートしています。

MySQLi とは

#MySQLi 拡張機能を使用すると、MySQL4.1 以降のバージョンのデータベースが提供する機能にアクセスできます。異なる DNS を介して異なるデータベースに接続できる PDO とは異なり、特に MySQL データベースを対象としています。

MySQL と PDO の違いと関連性

まず最初に、初期の MySQL 拡張機能を確認しましょう。

    #プロシージャのみ
  • #ストアド プロシージャ、複数ステートメントの実行、およびプリペアド ステートメントはサポートされません
  • PHP7 は削除され、まったくサポートされていません
  • ##その後、PDO

##オブジェクト指向の使用のみをサポート

  • さまざまなデータベースに接続でき、データベースを切り替えると変更が少なくなり、コードを変更する必要さえない場合もあります

  • ストアド プロシージャ、マルチステートメントの実行と準備されたステートメント

  • 最後は MySQLi です。

  • #オブジェクト指向とプロセス指向の両方の記述方法をサポート

    MySQL データベースのみをサポート
  • # #サポートされているストアド プロシージャ、複数ステートメントの実行、プリペアド ステートメント
  • PHP と MySQL のバージョン更新に従って、より迅速に MySQL の高度な機能をサポートできます
  • 3 つの特性から判断すると、MySQL (オリジナル) 拡張機能は決して推奨されません。古いプロジェクトであっても、PHP 版の PDO または MySQLi をサポートしている限り、データベース接続の変換を検討する必要があります。 2 つの方法のうちの 1 つです。 PHP5 環境での MySQL (オリジナル) 拡張機能の使用方法をまだ学習している場合は、やめても構いません。
  • PDO と MySQLi のどちらを選択するかについては、意見の問題です。実際、それらの間に大きな違いはありませんが、最新の大規模フレームワークは基本的に PDO をデフォルトのデータベース接続としてカプセル化するため、その移植性により、これらの一般的なフレームワークをさまざまなデータベースに接続することが容易になります。一部の小規模なフレームワークやプロジェクトでは、MySQLi が依然として使用されていることがあります。

    もちろん、ニッチが悪いというわけではありません。日常の開発と同じように、PHP 環境で他のデータベースを使用することはめったにないため、独自の小規模プロジェクトの運用には MySQLi のセットを完全に使用できます。より便利で速いです。同時に、古いプロジェクトを PHP7 バージョンに切り替えたい場合、MySQL (オリジナル) 接続データベースが以前に使用されていた場合、MySQL (オリジナル) コードを MySQLi にすぐに置き換えることができます。
拡張機能のインストールと MySQL8 に関する注意事項

MySQLi 拡張機能は PHP ソース コードとともにリリースされており、PHP をコンパイルするときに --with-mysqli を追加するだけです。デフォルトのデータベースドライバーは mysqlnd を使用するようになり、libmysql は基本的に削除されました。したがって、コンパイル時に他のパラメーターを追加する必要はなく、直接コンパイルするだけです。

MySQL8 サーバーはデフォルトでパスワード暗号化として caching_sha2_password を使用するため、MySQL8 に接続するときは注意する必要があります。 PHP7.2.4 より前のバージョンの MySQLi は、mysql_native_password を使用して接続パスワードを暗号化するため、データベースに接続できなくなります。 my.cnf ファイルを変更し、default_authentication_plugin=mysql_native_password を設定すると、MySQL8 でもユーザー パスワードの暗号化に mysql_native_password を使用できるようになります。

プロセス指向

前述したように、MySQLi はオブジェクト指向とプロセス指向という 2 つの記述方法をサポートしています。簡単に理解すると、1 つの書き方は MySQL (オリジナル) の拡張子であり、もう 1 つの書き方は PDO に似ています。まずはプロセス指向のライティングについて見てみましょう。

$mysqli = mysqli_connect("localhost", "root", "", "blog_test");
$res = mysqli_query($mysqli, "SELECT * FROM zyblog_test_user");
$row = mysqli_fetch_assoc($res);
print_r($row);
ログイン後にコピー

MySQL (オリジナル) 拡張コードを移植すると本当に便利だと思いますか?すべてのメソッド名を mysqli_xxx に変更するだけです。

オブジェクト指向

オブジェクト指向は PDO に少し似ています。まず接続ハンドル クラスを取得し、次にこのクラスを操作する必要があります。

$mysqli = new mysqli("localhost", "root", "", "blog_test");
$res = $mysqli->query("SELECT * FROM zyblog_test_user");
$row = $res->fetch_assoc();
print_r($row);
ログイン後にコピー

面向对象和面向过程混用

另外,这两种方式还可以混合使用,不过并不推荐。混合起来使用的话很容易让看代码的人晕头转向。所以,最好还是在一个项目中就坚持使用一种方式。

$mysqli = new mysqli("localhost", "root", "", "blog_test");
$res = mysqli_query($mysqli, "SELECT * FROM zyblog_test_user");
$row = $res->fetch_assoc();
print_r($row);
ログイン後にコピー

在这段代码中,我们实例化了一个 mysqli 对象,然后使用面向过程的 mysqli_query() 函数来执行语句,接着又使用面向对象的方式来获取结果集。是不是很乱?但是它是可以正常运行的。

总结

从上面的内容中可以看出,PDO 的特点是支持多种不同类型的数据库,就像 Java 中的 JDBC 一样。而 MySQLi 虽然只支持 MySQL 数据库,但它却可以同时支持面向对象和面向过程两种写法。是我们针对老项目代码进行升级优化的好帮手。同时,它还是现在入门 PHP 学习相关数据库操作的首选。在接下来的文章中,我们将默认只使用 面向对象 式的写法来继续学习 MySQLi 扩展相关的知识。

测试代码:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202009/source/4.PHP中的MySQLi扩展学习(一)MySQLi介绍.php
ログイン後にコピー

推荐学习:php视频教程

以上が3 分で PHP の MySQLi を理解できますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

See all articles