Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // データベースに接続するための情報
- $dsn = 'mysql:dbname=mydb;host=localhost;charset=utf8';
- $dbuser = 'root';
- $dbpass = '';
- // $_GET['name'] をエラーが出ないように確実に文字列として取得
- $name = (string)filter_input(INPUT_GET, 'name');
- try {
- // データベースに接続
- // 失敗するとcatchブロックにジャンプする
- $pdo = new PDO($dsn, $dbuser, $dbpass);
- // PDO関連の全てのメソッドで失敗時にcatchブロックにジャンプするようにする
- // こうすることでいちいち $result_flag とか書いてチェックする必要がなくなる
- $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- // プリペアドステートメントを生成
- $stmt = $pdo->prepare('SELECT * FROM user_db WHERE name = ?');
- // プレースホルダ「?」に値を文字列としてバインドして実行
- $stmt->execute([$name]);
- // 結果を配列で取得しておく
- $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
- } catch (PDOException $e) {
- // エラーを「500 Internal Server Error」でテキストとして表示して終了
- header('Content-Type: text/plain; charset=UTF-8', true, 500);
- exit($e->getMessage());
- }
- // HTMLエスケープするための関数を用意
- // (SQLの文字列のためのエスケープと全く処理内容が異なるので注意)
- function h($str) {
- return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
- }
- // HTML表示開始
- header('Content-Type: text/html; charset=UTF-8');
- ?>
- <!DOCTYPE html>
- <title>検索結果</title>
- <h1>結果</h1>
- <p>マッチした行をJSON形式で簡易的に表示します.</p>
- <pre><?=h(json_encode($rows, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT))?></pre>
Add Comment
Please, Sign In to add comment