PHP を使用して MySQLi で MySQLI_result オブジェクト操作を使用する方法
私たちは以前に MYSQLI_result 関連のコンテンツにすでに触れています。これは実際にはクエリの結果セットです。ただし、PDO では、通常、query() または PDOStatement オブジェクトを介してクエリを実行した後に結果が返されます。しかし、MySQLi では、クエリ結果もオブジェクト (MySQLI_result オブジェクト) に入れられます。
#MySQLI_result オブジェクトのプロパティ
まず、クエリを通じて MySQLI_result オブジェクトを取得する必要があります。$stmt = $mysqli->prepare("select * from zyblog_test_user where username = 'kkk'"); $stmt->execute(); // 执行语句 $result = $stmt->get_result(); var_dump($result); // object(mysqli_result)#3 (5) { // ["current_field"]=> // int(0) // ["field_count"]=> // int(4) // ["lengths"]=> // NULL // ["num_rows"]=> // int(7) // ["type"]=> // int(0) // }
$result->fetch_array(); var_dump($result); // …… // …… // ["lengths"]=> // array(4) { // [0]=> // int(0) // [1]=> // int(3) // [2]=> // int(3) // [3]=> // int(2) // } // …… // ……
クエリ結果セットの取得
MySQLI_result オブジェクトの表示可能な属性のうち、上記の情報のみが表示されます。これはビジネス開発にはあまり役に立ちません。行数に基づいてクエリに結果があるかどうかを判断するために使用できる num_rows に加えて、さらに重要なことに、結果セット内のデータ情報を取得する必要があります。この場合、他の関数を使用する必要があるので、データを取得しましょう。 すべての結果セットを取得var_dump($result->fetch_all());
// array(7) {
// [0]=>
// array(4) {
// [0]=>
// int(42)
// [1]=>
// string(3) "kkk"
// [2]=>
// string(3) "666"
// [3]=>
// string(2) "k6"
// }
// ……
// ……
$result->data_seek(0);
var_dump($result->fetch_all(MYSQLI_ASSOC));
// array(7) {
// [0]=>
// array(4) {
// ["id"]=>
// int(42)
// ["username"]=>
// string(3) "kkk"
// ["password"]=>
// string(3) "666"
// ["salt"]=>
// string(2) "k6"
// }
// ……
// ……
ログイン後にコピー
fetch_all() メソッドは、データ セット内のすべてのデータを取得し、配列形式で返すために使用されます。戻り形式を指定できます。デフォルトは配列添字 MYSQLI_NUM の形式で、PDO に似ており、MySQLI_ASSOC として直接指定して、キー名の形式でデータ内容を返すことができます。 data_seek() メソッドは、結果セットの添字を移動します。後で紹介するメソッドを取得または使用して結果セットを一度ループ処理する場合、再度実行するとカーソルがすでに最後の位置にあるため、データを取得できません。上記のコードでは、カーソルを添字 0 の初期位置に 2 回戻し、この結果セットを繰り返し操作できるようにしています。 通常の結果セットの取得行ごとのデータを取得したい場合は、さまざまな形式の結果セット データ取得方法を使用できます。 var_dump($result->fetch_all()); // array(7) { // [0]=> // array(4) { // [0]=> // int(42) // [1]=> // string(3) "kkk" // [2]=> // string(3) "666" // [3]=> // string(2) "k6" // } // …… // …… $result->data_seek(0); var_dump($result->fetch_all(MYSQLI_ASSOC)); // array(7) { // [0]=> // array(4) { // ["id"]=> // int(42) // ["username"]=> // string(3) "kkk" // ["password"]=> // string(3) "666" // ["salt"]=> // string(2) "k6" // } // …… // ……
var_dump($result->fetch_array()); // array(8) { // [0]=> // int(42) // ["id"]=> // int(42) // [1]=> // string(3) "kkk" // ["username"]=> // string(3) "kkk" // [2]=> // string(3) "666" // ["password"]=> // string(3) "666" // [3]=> // string(2) "k6" // ["salt"]=> // string(2) "k6" // } var_dump($result->fetch_array(MYSQLI_ASSOC)); // array(4) { // ["id"]=> // int(43) // ["username"]=> // string(3) "kkk" // ["password"]=> // string(3) "666" // ["salt"]=> // string(2) "k6" // }
var_dump($result->fetch_assoc()); // array(4) { // ["id"]=> // int(42) // ["username"]=> // string(3) "kkk" // ["password"]=> // string(3) "666" // ["salt"]=> // string(2) "k6" // }
var_dump($result->fetch_row()); // array(4) { // [0]=> // int(43) // [1]=> // string(3) "kkk" // [2]=> // string(3) "666" // [3]=> // string(2) "k6" // }
ar_dump($result->fetch_object()); // object(stdClass)#4 (4) { // ["id"]=> // int(42) // ["username"]=> // string(3) "kkk" // ["password"]=> // string(3) "666" // ["salt"]=> // string(2) "k6" // }
class User { public function __construct() { print_r(func_get_args()); } } var_dump($result->fetch_object('User', [1, 2, 3])); // Array // ( // [0] => 1 // [1] => 2 // [2] => 3 // ) // object(User)#4 (4) { // ["id"]=> // int(42) // ["username"]=> // string(3) "kkk" // ["password"]=> // string(3) "666" // ["salt"]=> // string(2) "k6" // }
クエリ結果セットのフィールド情報の取得
次に、MySQLI_result オブジェクトのフィールド関連情報の取得について見てみましょう。現在のクエリの結果セット内のすべてのフィールド情報を直接取得できます。while ($finfo = $result->fetch_field()) { var_dump($result->current_field); var_dump($finfo); } // int(1) // object(stdClass)#4 (13) { // ["name"]=> // string(2) "id" // ["orgname"]=> // string(2) "id" // ["table"]=> // string(16) "zyblog_test_user" // ["orgtable"]=> // string(16) "zyblog_test_user" // ["def"]=> // string(0) "" // ["db"]=> // string(9) "blog_test" // ["catalog"]=> // string(3) "def" // ["max_length"]=> // int(0) // ["length"]=> // int(11) // ["charsetnr"]=> // int(63) // ["flags"]=> // int(49667) // ["type"]=> // int(3) // ["decimals"]=> // int(0) // } // int(2) // object(stdClass)#5 (13) { // ["name"]=> // string(8) "username" // ["orgname"]=> // string(8) "username" // …… // ……
$result->field_seek(1); while ($finfo = $result->fetch_field()) { var_dump($finfo); } // object(stdClass)#5 (13) { // ["name"]=> // string(8) "username" // ["orgname"]=> // string(8) "username"
var_dump($result->fetch_fields()); // array(4) { // [0]=> // object(stdClass)#5 (13) { // ["name"]=> // string(2) "id" // ["orgname"]=> // string(2) "id" // ["table"]=> // string(16) "zyblog_test_user" // ["orgtable"]=> // string(16) "zyblog_test_user" // ["def"]=> // string(0) "" // ["db"]=> // string(9) "blog_test" // ["catalog"]=> // string(3) "def" // ["max_length"]=> // int(0) // ["length"]=> // int(11) // ["charsetnr"]=> // int(63) // ["flags"]=> // int(49667) // ["type"]=> // int(3) // ["decimals"]=> // int(0) // } // [1]=> // object(stdClass)#4 (13) { // ["name"]=> // string(8) "username" var_dump($result->fetch_field_direct(2)); // object(stdClass)#7 (13) { // ["name"]=> // string(8) "password" // ["orgname"]=> // string(8) "password" // ["table"]=> // string(16) "zyblog_test_user" // ["orgtable"]=> // string(16) "zyblog_test_user" // ["def"]=> // string(0) "" // ["db"]=> // string(9) "blog_test" // ["catalog"]=> // string(3) "def" // ["max_length"]=> // int(3) // ["length"]=> // int(765) // ["charsetnr"]=> // int(33) // ["flags"]=> // int(0) // ["type"]=> // int(253) // ["decimals"]=> // int(0) // }
总结
至此,MySQLi 相关扩展的学习我们也就告一段落了,其它的一些类和函数比如 MySQLI_Driver 、 MySQLI_Exception 之类的内容大家可以自行查阅相关的文档,内容都不是很多。MySQLI_Driver 对象可以帮助我们指定当前驱动的报错形式,之前的文章中我们也已经接触过。
总体来说,整个 PHP 中和 MySQL 打交道的官方扩展我们就已经全部学习完了,PDO 和 MYSQLi 这两个扩展大家更主要的还是要掌握它们的区别和联系。在实际的业务开发中 PDO 还是会使用得更多,但 MySQLi 也绝不是能够完全忽略的,多多动手尝试学习吧。
测试代码:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202009/source/9.PHP中的MySQLi扩展学习(六)MySQLI_result对象操作.php
推荐学习:php视频教程
以上がPHP を使用して MySQLi で MySQLI_result オブジェクト操作を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

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

ホットトピック









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

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

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
