ホームページ  >  記事  >  バックエンド開発  >  PHPで検索レコードを実装する方法

PHPで検索レコードを実装する方法

PHPz
PHPzオリジナル
2023-04-18 09:48:18640ブラウズ

インターネットの発展に伴い、検索エンジンは人々が情報を入手するための重要なチャネルの 1 つになりました。多くの Web サイトには、ユーザーが必要なコンテンツをすばやく見つけられるようにするための独自の検索機能も備わっています。一般的に使用されるプログラミング言語である PHP には、ユーザー エクスペリエンスを向上させるための検索記録機能も実装できます。この記事では、PHPの検索レコードの実装方法を紹介します。

1. データベース設計

最初に考慮すべきことは、データベースの設計です。この記事では、MySQL を例として使用します。

1.1 テーブル設計

次のフィールドを含む、ユーザーが検索したレコードを保存するテーブルを作成する必要があります:

  1. id: の一意の識別子。自動的に増加するレコード
  2. keyword: ユーザーが検索したキーワード
  3. search_time: ユーザーの検索時刻 (datetime 形式)
  4. user_id: ユーザーの一意の識別子、空にすることもできます

テーブルの構造は次のとおりです:

CREATE TABLE search_history (
id int(11 ) NOT NULL AUTO_INCREMENT,
キーワード varchar(255) NOT NULL DEFAULT '',
search_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
user_id int(11) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

1.2 フィールドの説明

In上の表では、次の点に注意する必要があります。

  1. id ​​は主キーであり、自動的にインクリメントされ、レコードを一意に識別するために使用されます。
  2. キーワードはユーザーが検索したキーワードであり、空にすることはできません。
  3. search_time は検索が行われた時刻です。形式は日時型で、記録しやすいようにデフォルト値は現在時刻に設定されています。
  4. user_id はユーザーの一意の識別子であり、シナリオによってはユーザーの行動の統計と分析が容易になりますが、必須フィールドではないため、空にすることもできます。

2. 検索履歴を記録する

ページではユーザーの検索機能をフォームから実装することができ、検索内容に応じて上記のsearch_historyテーブルに保存されます。 . .具体的なコードは次のとおりです。

2.1 データベースへの接続

まず、検索結果をデータベースに保存するためにデータベースに接続する必要があります。

$conn = mysqli_connect('localhost', 'root', 'password', 'database_name');
if (!$conn) {

die("Connection failed: " . mysqli_connect_error());

}
mysqli_set_charset ($conn,"utf8mb4");

2.2 検索リクエストの処理

ユーザーが検索ボックスに入力したコンテンツを取得します。例:

$keyword = $ _REQUEST[' キーワード'];

ユーザーが何も入力しない場合は、データベースに保存する必要はありません。

if (empty($keyword)) {

return;

}

2.3 検索結果をデータベースに保存します

次に、検索結果を次の場所に保存します。上記の search_history テーブルは、ユーザーの検索履歴を記録します。

$sql = "INSERT INTO search_history (keyword, user_id) VALUES ('$keyword', 1)";
mysqli_query($conn, $sql);

上記の場合コード 、検索されたキーワードとユーザーの一意の識別子 (暫定的に 1) を search_history テーブルのキーワード フィールドと user_id フィールドに保存します。

3. 検索履歴の表示

Web サイト上で検索履歴を表示する必要がある場合は、データベース内の search_history テーブルにクエリを実行することで取得できます。以下では、この機能を PHP で実装する方法を紹介します。

3.1 データベースのクエリ

$conn = mysqli_connect('localhost', 'root', 'password', 'database_name');
if (!$conn) {

die("Connection failed: " . mysqli_connect_error());

}
mysqli_set_charset($conn,"utf8mb4");

$sql = "SELECT * FROM search_history ORDER BY search_time DESC LIMIT 10";
$result = mysqli_query($ conn , $sql);

上記のコードは、まずデータベースに接続し、search_history テーブル内のすべてのレコードをクエリし、新しいレコードの逆順に並べて、最新のレコードの上位 10 件を取得します。

3.2 履歴レコードの取得

次に、取得したレコードをループしてページに出力します。

if (mysqli_num_rows($result) > 0) {

while($row = mysqli_fetch_assoc($result)) {
    echo $row["keyword"];
}

} else {

echo "暂无搜索历史记录";

}

上記のコードは、まずクエリが結果はEmptyで、空でない場合はループトラバーサルにより各レコードのキーワードがページに出力され、空の場合はプロンプト情報が出力されます。

4. 検索履歴の削除

ユーザーが一部の検索履歴を削除する必要がある場合、ページに「削除」ボタンを追加することで、データベースから削除する必要があるレコードをクリアできます。 。

4.1 データベースへの接続

操作は上記と同じなので、ここでは繰り返しません。

$conn = mysqli_connect('localhost', 'root', 'password', 'database_name');
if (!$conn) {

die("Connection failed: " . mysqli_connect_error());

}
mysqli_set_charset ($conn,"utf8mb4");

4.2 削除リクエストの処理

ユーザーが削除する必要があるレコードの ID を取得し、データベースから削除します。

$id = $_REQUEST['id'];

if (!empty($id)) {

$sql = "DELETE FROM search_history WHERE id='$id'";
mysqli_query($conn, $sql);

}

If id は空の場合、アクションは必要ありません。

5.概要

上記の導入を通じて、PHP 検索レコードの実装は主にデータベースの設計を中心に展開する必要があることがわかります。テーブル内の対応するフィールドを設定することで、検索結果と記録時間がデータベースに保存されます。問い合わせや展示を容易にします。もちろん、セキュリティの問題に注意し、SQL インジェクションやその他の攻撃を避ける必要があります。同時に、検索記録機能をより柔軟に実装する必要がある場合は、Cookie やセッションなどの他のテクノロジーを使用することもできます。

以上がPHPで検索レコードを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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