>  기사  >  백엔드 개발  >  PHP에서 검색 기록을 구현하는 방법

PHP에서 검색 기록을 구현하는 방법

PHPz
PHPz원래의
2023-04-18 09:48:18640검색

인터넷의 발달과 함께 검색 엔진은 사람들이 정보를 얻는 중요한 채널 중 하나가 되었습니다. 또한 많은 웹사이트에는 사용자가 필요한 콘텐츠를 빠르게 찾을 수 있도록 자체 검색 기능이 갖춰져 있습니다. 일반적으로 사용되는 프로그래밍 언어인 PHP는 검색 기록 기능을 구현하여 사용자에게 더 나은 사용자 경험을 제공할 수도 있습니다. 이 기사에서는 PHP 검색 기록을 구현하는 방법을 소개합니다.

1. 데이터베이스 디자인

가장 먼저 고려해야 할 것은 데이터베이스 디자인입니다. 이 기사에서는 MySQL을 예로 사용합니다.

1.1 테이블 디자인

다음 필드를 포함하여 사용자가 검색한 레코드를 저장하는 테이블을 만들어야 합니다.

  1. id: 레코드의 고유 식별자, 자동으로 증가됨
  2. keyword: 검색된 키워드 user
  3. search_time: user 검색 시간(datetime 형식)
  4. user_id: 사용자의 고유 식별자, 비어 있을 수 있음

테이블 구조는 다음과 같습니다.

CREATE TABLE search_history (
 id int(11) NOT NULL AUTO_INCREMENT,
 keyword 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 필드 설명

위 표에서 다음 사항에 주의해야 합니다.

  1. id는 기본 키이며 자동으로 증가하며 레코드를 고유하게 식별하는 데 사용됩니다.
  2. keyword는 사용자가 검색한 키워드로, 비워 둘 수 없습니다.
  3. search_time은 검색이 발생한 시간으로 형식은 datetime형으로 기본값은 현재 시간으로 설정되어 있어 쉽게 기록할 수 있습니다.
  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['keyword']

사용자가 아무것도 입력하지 않은 경우 저장할 필요가 없습니다. 데이터베이스에.

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. 검색 기록 표시

웹 사이트에 검색 기록을 표시해야 하는 경우 데이터베이스의 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 "暂无搜索历史记录";

}

위 코드는 먼저 쿼리 결과가 비어 있지 않은지 확인하고, 다음의 키를 통해 루프를 돌립니다. 각 레코드에 해당 단어가 페이지에 출력되고, 비어 있으면 프롬프트 메시지가 출력됩니다.

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);

}

id가 비어 있으면 조치가 필요하지 않습니다.

5. 요약

위의 소개를 통해 PHP 검색 기록의 구현은 주로 데이터베이스 설계를 중심으로 이루어져야 한다는 것을 알 수 있습니다. 테이블의 해당 필드를 설정하면 검색 결과와 기록 시간이 데이터베이스에 저장되어 쿼리가 용이해집니다. 그리고 디스플레이. 물론 보안 문제에 주의를 기울이고 SQL 주입 및 기타 공격을 피해야 합니다. 동시에 검색 기록 기능을 보다 유연하게 구현해야 하는 경우 쿠키, 세션 등과 같은 다른 기술을 사용할 수도 있습니다.

위 내용은 PHP에서 검색 기록을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.