PHPでMySQLデータベースを処理する場合、パフォーマンスとデータ収集効率が多くの場合、開発者が注意を払う重要な問題です。 connect()関数を使用して、 mysqli_fetch_assoc()関数とのデータベース接続を確立してデータを読み取るために、コードの読みやすさを改善するだけでなく、アプリケーションの実行効率をある程度改善できます。この記事では、両方を通じて効率的なデータ読み取りを実現する方法を詳細に説明します。
PHPでは、通常、 Connect()関数をカプセル化して、データベース接続オブジェクトを作成および返信します。これの利点は、強力な再利用性とより明確なコードを持っていることです。
function connect() {
$host = 'localhost';
$user = 'db_user';
$password = 'db_pass';
$database = 'my_database';
$conn = new mysqli($host, $user, $password, $database);
if ($conn->connect_error) {
die("接続に失敗しました: " . $conn->connect_error);
}
return $conn;
}
この関数は、データベース接続のプロセスをカプセル化し、接続エラーを処理します。この構造により、接続ロジックは一度維持されるだけで、コードメンテナンス作業が簡素化されます。
mysqli_fetch_assoc()関数は、 mysqli拡張機能で一般的に使用される結果セット処理機能です。フィールド名とキー値が対応するフィールドの値として、キー名との関連配列を返します。この方法は、構造化されたデータを処理する場合に特に便利です。
これが完全なデータ読み取り例です。
$conn = connect();
$sql = "SELECT id, username, email FROM users";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo "ID: " . $row["id"] . " - ユーザー名: " . $row["username"] . " - 郵便: " . $row["email"] . "<br>";
}
} else {
echo "記録はありません";
}
$conn->close();
メモリの使用量が少ない<br> mysqli_fetch_array()と比較して、あらゆる種類のデータ(数値インデックスや関連付けインデックスを含む)を返して、 mysqli_fetch_assoc()は連想配列のみを返し、メモリオーバーヘッドを保存します。
より読みやすいコード<br> フィールド名を使用して配列要素にアクセスすることは、 $ row ["username"]など、 $ row [1]よりも読みやすく保守可能です。
json <br>を簡単に変換できます データベースから取得した連想配列は、JSONオブジェクトに直接変換できます。これは、RESTFUL APIを構築するときに非常に便利です。
$data = [];
while($row = mysqli_fetch_assoc($result)) {
$data[] = $row;
}
echo json_encode($data);
Webページのフロントエンドにユーザーリストデータを表示する必要があると仮定し、前述のメソッドと組み合わせて、HTMLテーブルをすばやく生成できます。
$conn = connect();
$sql = "SELECT id, username, email FROM users";
$result = $conn->query($sql);
echo "<table border='1'>";
echo "<tr><th>ID</th><th>ユーザー名</th><th>郵便</th></tr>";
while($row = mysqli_fetch_assoc($result)) {
echo "<tr>";
echo "<td>" . $row["id"] . "</td>";
echo "<td>" . $row["username"] . "</td>";
echo "<td><a href='https://m66.net/user/" . $row["id"] . "'>" . $row["email"] . "</a></td>";
echo "</tr>";
}
echo "</table>";
$conn->close();
この例では、出力要件の仕様を満たすURLを含むすべての部品のドメイン名をM66.NETに置き換えます。
CONNECT()関数を合理的に使用してデータベース接続ロジックをカプセル化し、 MySQLI_FETCH_ASSOC()でデータを効率的に取得することにより、アプリケーションのパフォーマンスを改善するだけでなく、コードをより簡潔で理解しやすくすることができます。毎日の開発では、このモデルをインフラストラクチャの一部として使用することをお勧めします。