【PHP】이름 검색 기능: 부분 일치 검색 및 검색 KW 저장 처리

9523 단어 PHPSQL#PDO
DB에 등록된 개인 정보를 부분적으로 일관되게 검색할 수 있는 기능을 제공합니다.
※ HTML과 PHP의 기술 조합 더러워 웃음
이번 포인트는요.
• 검색 창에 입력한 KW를 그대로 유지
• 애매한 검색
네.
특히 썸 검색에서'%'를 입력하면 모든 데이터를 끌어온다
반드시 도피 처리를 해야 한다.
※ 참고할 수 있는 URL은 잠시 후에 기재해 주십시오.
select.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>名前検索機能</title>
</head>
<body>
<form action="" method="post">
<p>検索したい人の名前を入力してください</p>
<input type="search" name="search" placeholder="キーワードを入力" value="
<?php
    if (!empty($_POST['search'])) {
        echo $_POST['search'];
    }
?>">
<input type="submit" name="submit" value="検索">
</form>
<?php
$db = 'mysql:host=hogehoge; dbname=hogehoge-hogehoge';
$user = 'hogehoge';
$password = 'xxxxxx';
$dbh = new PDO($db, $user, $password);

try {
    if (!empty($_POST['search'])) {
?>
<?php
        $dbh = new PDO($db, $user, $password);
        $stm = $dbh->prepare("SELECT * FROM user WHERE name LIKE :user_name");
        $stm->bindValue(":user_name", '%' . addcslashes($_POST['search'], '\_%') . '%');
        $stm->execute();
        if ($stm->rowCount()) {
?>
<table border='1'>
<tr>
<th>id</th>
<th>名前</th>
<th>身長</th>
<th>誕生日</th>
<th>趣味</th>
</tr>
<?php
            foreach ($stm as $value) {
                echo '<tr>';
                echo '<td>' . $value['id'] . '</td>';
                echo '<td>' . $value['name'] . '</td>';
                echo '<td>' . $value['height'] . '</td>';
                echo '<td>' . $value['birthday'] . '</td>';
                echo '<td>' . $value['hobby'] . '</td>';
                echo '<tr>';
            }
        } else {
            echo '該当するユーザーがいません';
        }
    } else {
        echo '文字を入力してください';
    }
} catch (PDOException $e) {
        echo 'エラーです!';
}
?>
</body>
</html>
출력은 이런 느낌.
※ 입력한 내용이 없는 상태

"%"로 검색할 때
※ 이름의 일부가 미리% 추가되었습니다.

이 부분은 처리를 피하기 위한 상응하는 부분이다
select.php
$stm->bindValue(":user_name", '%' . addcslashes($_POST['search'], '\_%') . '%');

좋은 웹페이지 즐겨찾기