PHP-복수의 검색키워드로 검색하고 싶을때
PHP-복수의 검색키워드로 검색하고 싶을 때
explode() 함수를 사용해 검색 문자열을 배열에 대입하고 SQL문을 작성합니다
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>복수의 검색 키워드로 검색하고 싶을 때</title>
<link href="../../css/style.css" rel="stylesheet">
</head>
<body>
<div>
<?php
// h() 함수 레시피 218를 불러옵니다 레시피 041.
require_once '../../../../lib/h.php';
// checkInput() 함수 레시피 211를 불러옵니다.
require_once '../../../../lib/checkInput.php';
// POST된 데이터를 체크합니다.
$_POST = checkInput($_POST);
// 3항 연산자 레시피 025로 검색 문자열의 유무를 판정하고 처리합니다.
$data = isset($_POST['data']) ? trim($_POST['data']) : '';
// 입력된 검색 문자열을 explode() 함수에서 반각 공백으로 단락을 짓고 배열에 대입합니다.
// 멀티바이트 공백으로 단락을 지은 경우를 고려하여 mb_convert_kata() 함수 레시피 053로
// 싱글 바이트 공백으로 변환합니다.
$dataList = explode(' ', mb_convert_kana($data, 's'));
// 값이 빈 요소를 삭제합니다 레시피 093.
$dataList = array_filter($dataList, function ($val) {
return $val != '';
});
// 값으로 정렬하여 키를 0에서 다시 매깁니다 레시피 081.
sort($dataList);
if (! empty($dataList)) {
// 데이터베이스 설정 레시피 257을 불러옵니다 레시피 041.
require_once __DIR__ . '/../../../../conf/database_conf.php';
try{
// MySQL 데이터베이스에 접속합니다 레시피 레시피 257.
$db = new PDO($dsn, $dbUser, $dbPass);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// SQL문을 준비합니다.
// 검색 문자열의 수만큼 ':data0', ':data1' 등과 같이 플레이스 홀더를 준비합니다.
$where = '';
foreach ($dataList as $key => $value) {
}
}
}