인터넷의 발달과 함께 검색 엔진은 사람들이 정보를 얻는 중요한 채널 중 하나가 되었습니다. 또한 많은 웹사이트에는 사용자가 필요한 콘텐츠를 빠르게 찾을 수 있도록 자체 검색 기능이 갖춰져 있습니다. 일반적으로 사용되는 프로그래밍 언어인 PHP는 검색 기록 기능을 구현하여 사용자에게 더 나은 사용자 경험을 제공할 수도 있습니다. 이 기사에서는 PHP 검색 기록을 구현하는 방법을 소개합니다.
1. 데이터베이스 디자인
가장 먼저 고려해야 할 것은 데이터베이스 디자인입니다. 이 기사에서는 MySQL을 예로 사용합니다.
1.1 테이블 디자인
다음 필드를 포함하여 사용자가 검색한 레코드를 저장하는 테이블을 만들어야 합니다.
테이블 구조는 다음과 같습니다.
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 필드 설명
위 표에서 다음 사항에 주의해야 합니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!