티스의 이야기

PHP-복수 선택한 데이터 검색하기 본문

프로그래밍

PHP-복수 선택한 데이터 검색하기

밍딩이 2016. 6. 27. 17:13

PHP-복수 선택한 데이터 검색하기



<!DOCTYPE html>

<html lang="ko">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width,initial-scale=1.0">

<title>복수 선택된 데이터를 검색하고 싶을 때</title>

</head>

<body>

<div>

<?php

// h() 함수 레시피 218를 불러옵니다 레시피 041.

require_once '../../../../lib/h.php';


if (isset($_POST['data']) && count($_POST['data']) > 0) {

// 데이터베이스 설정 레시피 257을 불러옵니다 레시피 041.

require_once __DIR__ . '/../../../../conf/database_conf.php';


try {

// MySQL 데이터베이스에 접속합니다 레시피 257.

$db = new PDO($dsn, $dbUser, $dbPass);

$db-> setAttribute(POD::ATTR_EMULATE_PREPARES, false);

$db-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


$data = $_POST['data'];

// SQL문을 준비합니다/

$where_in = implode(', :id', array_keys($data));

$sql = 'SELECT * FROM hobby WHERE id IN (:id' . $where_in . ')';

$prepare = $db->prepare($sql);

// SQL문의 플레이스 홀더에 값을 바인드하고 쿼리를 실행합니다.

for ($i = 0; $i < count($data); $i++) {

$prepare->bindValue(':id' . $i, (int) $data[$i], PDO::PARAM_INT);

}

$prepare->execute();

$result = $prepare->fetchALL(PDO::FETCH_ASSOC);


echo '<p>선택된 데이터 번호:' . h(implode(', ', $data)) . '</p>';


echo '<p>해당하는 검색 결과 :<br>';

foreach ($result as $row) {

echo h($row['id']) . ' : ' . h($row['name']) . '<br>';

}

echo '</p>';


// 오류가 발생한 경우 PDOException 예외가 발생하므로 캐치합니다

} catch (PDOException $e) {

echo '오류가 발생했습니다. 내용: ' . h($e->getMessage());

}

}

?>

<p>취미를 선택해 주세요</p>

<form method="post" action="multi_search.php">

<input type="checkbox" name="data[]" value="1">낚시&nbsp;

<input type="checkbox" name="data[]" value="2">영화 감상&nbsp;

<input type="checkbox" name="data[]" value="3">음악 감상&nbsp;

<input type="submit" value="전송">

</form>

</div>

</body>

</html>


Comments