PHPでは、MySQLデータベースで操作する際にMySQLI拡張機能が最も一般的に使用されるツールの1つです。 MySQLI拡張機能を使用すると、データベースに簡単に接続し、クエリを実行し、クエリの結果を取得できます。この記事では、 Real_Query関数とMySQLI_FETCH_ASSOC関数を組み合わせて、クエリの結果を効率的に取得および処理する方法を紹介します。
これら2つの機能を組み合わせる方法を理解する前に、それらの基本的な機能を理解する必要があります。
REAL_QUERY :これは、SQLクエリを実行するためにMySQLI拡張機能によって提供される関数です。クエリ関数とは異なり、 REAL_QUERYはSQLコマンドをデータベースに直接送信して処理します。複雑なクエリを実行する必要がある場合、 Real_Queryを使用すると、より多くの制御と柔軟性が得られます。
mysqli_fetch_assoc :これは、クエリ結果からデータの列を取得し、連想配列として返すもう1つの非常に一般的に使用されるmysqli関数です。各フィールド名は配列のキーとして使用され、フィールド名を介して対応する値にアクセスできます。
まず、データベース接続を作成し、 Real_Queryを使用してSQLクエリを実行する必要があります。 Real_Queryは結果を直接返しませんが、 mysqli_use_resultまたはmysqli_store_resultを介してクエリの結果セットを取得します。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// データベース接続を作成します</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">'localhost'</span></span><span>, </span><span><span class="hljs-string">'root'</span></span><span>, </span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-string">'test_db'</span></span><span>);
</span><span><span class="hljs-comment">// 接続が成功しているかどうかを確認してください</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'接続に失敗しました: '</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}
</span><span><span class="hljs-comment">// 意味SQLクエリステートメント</span></span><span>
</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"SELECT id, name, age FROM users"</span></span><span>;
</span><span><span class="hljs-comment">// クエリを実行します</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">real_query</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>)) {
</span><span><span class="hljs-comment">// クエリの結果を取得します</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">use_result</span></span><span>(); </span><span><span class="hljs-comment">// クエリの結果を使用します</span></span><span>
</span><span><span class="hljs-comment">// クエリが成功したかどうかを確認してください</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span>) {
</span><span><span class="hljs-comment">// 結果をループする</span></span><span>
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch_assoc</span></span><span>()) {
</span><span><span class="hljs-comment">// データの各行を処理します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ID: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>] . </span><span><span class="hljs-string">" | Name: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>] . </span><span><span class="hljs-string">" | Age: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'age'</span></span><span>] . </span><span><span class="hljs-string">"<br>"</span></span><span>;
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"クエリの結果は空です"</span></span><span>;
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"クエリに失敗しました: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error;
}
</span><span><span class="hljs-comment">// データベース接続を閉じます</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
このコードでは、最初にMySQLIオブジェクトを使用してMySQLデータベースへの接続を作成します。接続が成功した場合、 REAL_QUERYメソッドを使用してSQLクエリステートメントを実行します。次に、 use_resultを介してクエリ結果を設定し、 mysqli_fetch_assoc関数を介して行ごとに結果を取得します。
mysqli_fetch_assocは、結果セットの各行を連想配列として返す非常に強力な関数です。上記の例では、 $ rowは、 $ row ['id'] 、 $ row ['name'] 、 $ row ['age']などのフィールド名で各行のデータにアクセスできる配列です。
このアプローチは、 MySQLI_FETCH_ROW (数値インデックスアレイを返す)を使用するよりも読みやすいです。これは、各フィールドの位置を覚えていないフィールド名で直接データにアクセスできるためです。
柔軟性: REAL_QUERYは、より複雑なクエリを処理でき、大規模なアプリケーションまたは複雑なクエリ操作により多くの制御を提供します。単純な選択クエリだけでなく、 real_Queryを介して任意のSQLコマンドを直接実行できます。
効率: MySQLI_FETCH_ASSOCによって返される連想配列は、クエリの結果を処理する際により読みやすく直感的であり、データが効率的かつ明確に処理されるシナリオに適しています。
エラー処理: Real_Queryは、より多くのエラー情報と診断情報を提供します。これにより、開発者は問題を見つけることができます。 mysqli_fetch_assocは、結果セットを通過するプロセスを簡素化し、インデックスを手動で管理する問題を回避します。
Real_QueryとMySQLI_FETCH_ASSOCを組み合わせて、データベースクエリの結果を簡単に取得および処理できます。 Real_Queryは柔軟なクエリ実行機能を提供しますが、 MySQLI_FETCH_ASSOCは結果の処理をより明確かつ直感的にします。これら2つの使用を習得すると、PHPでのデータベース操作の効率と読みやすさが大幅に向上します。