PDOを使いDBからデータを取得

  • 2021.05.30
  • PHP
PDOを使いDBからデータを取得

PDOを使ってDBからデータを使う。

<?php
// POSTできたかを判断
if($_SERVER[‘REQUEST_METHOD’] === ‘POST’){
// POSTの受け取り
$kensaku = $_POST[‘kensaku’];
$sinai=$_POST[‘sinai’];

// データベース接続ファイルを呼び出す
require_once(‘./db.php’);

// 変数の初期化
$dbh = null;
$sql = null;
$stmt = null;
$data = [];

// 例外処理の設定
try{
// データベース情報をインスタンス化
$dbh = new PDO($dsn,$user,$password);
// エラークラスのデータを取得
$dbh ->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
// SQL文の準備
// ********************************************
// LIKE句とORを使い、あいまい検索を行う。
$sql = “SELECT * FROM search_test WHERE fukuoka LIKE :fukuoka OR title LIKE :title”;
// $sql = “SELECT * FROM search_test WHERE title LIKE :title OR contents LIKE :contents OR fukuoka LIKE :fukuoka”;
// 準備
$stmt = $dbh->prepare($sql);
// ********************************************
// プリペアドステートメントにより、DBの型を決め直して入れる
// 値の挿入
$stmt -> bindValue(‘:title’ , ‘%’.$kensaku.’%’ , PDO::PARAM_STR);
// $stmt -> bindValue(‘:contents’ , ‘%’.$kensaku.’%’ , PDO::PARAM_STR);
$stmt -> bindValue(‘:fukuoka’ , ‘%’.$sinai.’%’ , PDO::PARAM_STR);
// 実行
$stmt ->execute();
// 全ての行数を取り出す
$count =$stmt -> rowCount();
// データを一行取り出し※fetchとは一行を取り出す関数
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$data[] = $row;
}
// var_dump($data);exit();
}catch(PDOException $e){

// エラーが確認した時
print ($e -> getMessage());
echo ‘接続に失敗しました。’;
die();
}
}else{
echo ‘アクセスできません。’;
exit();
}
?>