PHPでは、 MySQLI拡張ライブラリは、MySQLデータベースとの相互作用のための豊富な機能を提供します。 mysqli_resultは、クエリの結果を便利な方法、フィルター、ソートで取得できる一般的な結果セットオブジェクトです。この記事では、例を使用して、 mysqli_result関数を使用してサーバー側のデータフィルタリングとソート機能を実装する方法を紹介します。
PHP Webアプリケーションを構築する場合、多くの場合、大量のデータを処理する必要があります。このデータのフィルタリングとソートは、クライアントにユーザーに不必要な待機時間を引き起こす可能性があります。効率を向上させるために、実行のためにフィルタリングとソートロジックをサーバー側に配置できます。この記事では、PHPのmysqli_resultを通じてこの目標を達成する方法について説明します。
まず、MySQLデータベースへの接続を確立する必要があります。 mysqli_connect関数を使用して、データベースに接続できます。
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// 接続を作成します
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 接続を確認してください
if (!$conn) {
die("接続に失敗しました: " . mysqli_connect_error());
}
?>
この例では、 test_dbという名前のデータベースに接続します。データベース接続が失敗した場合、エラーメッセージが出力されます。
Fields ID 、名前、価格、およびcreated_atを含む製品と呼ばれるデータテーブルがあるとします。次に、SQLクエリを記述してデータを取得し、 mysqli_query関数を使用してクエリを実行して結果を返します。
<?php
$sql = "SELECT * FROM products";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// 出力データ
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Price: " . $row["price"]. "<br>";
}
} else {
echo "データなし";
}
?>
このクエリはすべての製品のリストを返し、結果をラインごとに出力します。
ユーザーエクスペリエンスを向上させるために、データのフィルタリングおよび並べ替え機能を実装できます。価格と名前で製品をフィルタリングおよびソートすると仮定します。
URLパラメーターを受信してデータをフィルタリングできます。たとえば、ユーザーは50を超える価格で製品を除外したいと考えています。次の方法で実装できます。
<?php
$price_filter = isset($_GET['price']) ? $_GET['price'] : 0;
$sql = "SELECT * FROM products WHERE price > $price_filter";
$result = mysqli_query($conn, $sql);
?>
さらに、ユーザーは価格または名前でデータをソートする必要がある場合もあります。条項ごとにこれを達成するために注文を使用できます。
<?php
$sort_by = isset($_GET['sort']) ? $_GET['sort'] : 'price';
$order = isset($_GET['order']) ? $_GET['order'] : 'ASC';
$sql = "SELECT * FROM products ORDER BY $sort_by $order";
$result = mysqli_query($conn, $sql);
?>
この例では、ユーザーは、URLパラメーターを介してソートされたフィールド(ソート)とソート順序( ASCまたはDESCになる可能性がある)を指定できます。たとえば、 sort = rice&order = descは、価格の下降順にソートされます。
フィルタリングとソート機能を同時に実装するために、2つの機能を組み合わせることができます。
<?php
$price_filter = isset($_GET['price']) ? $_GET['price'] : 0;
$sort_by = isset($_GET['sort']) ? $_GET['sort'] : 'price';
$order = isset($_GET['order']) ? $_GET['order'] : 'ASC';
$sql = "SELECT * FROM products WHERE price > $price_filter ORDER BY $sort_by $order";
$result = mysqli_query($conn, $sql);
?>
このようにして、ユーザーはフィルタリング条件(価格は特定の値よりも大きい)とソートメソッド(価格または名前、上昇または下降)を選択できます。
これは、フィルタリングとソート機能を組み合わせた完全なPHPサンプルコードです。
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("接続に失敗しました: " . mysqli_connect_error());
}
$price_filter = isset($_GET['price']) ? $_GET['price'] : 0;
$sort_by = isset($_GET['sort']) ? $_GET['sort'] : 'price';
$order = isset($_GET['order']) ? $_GET['order'] : 'ASC';
$sql = "SELECT * FROM products WHERE price > $price_filter ORDER BY $sort_by $order";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Price: " . $row["price"]. "<br>";
}
} else {
echo "データなし";
}
mysqli_close($conn);
?>
この例では、ユーザーは次のようなURLを介してフィルタリングとソートパラメーターを渡すことができます。
http://m66.net/products.php?price=50&sort=name&order = asc:価格が50を超え、名前の昇順で配置します。
http://m66.net/products.php?price=100&sort=price&order = desc:価格が100を超え、価格の下降順に配置されます。
この記事では、 mysqli_result関数を介してPHPでサーバー側のデータフィルタリングと並べ替え機能を実装する方法を紹介します。条項によるSQLの場所と順序を組み合わせることにより、大量のデータを効率的に処理し、クライアントの負担を軽減できます。実際のアプリケーションでは、より良いユーザーエクスペリエンスを提供するために、ニーズに応じてフィルタリング条件と並べ替えルールを調整できます。