検索窓を作ったのですが、上手いできません。どこが問題なのかご指摘お願いします。
エラー内容としては、検索しても何も反応しない感じです。select文のlike文などを取り扱うのが初めてなのでそこらへんが間違っている可能性は十分にあると思っています。(WHEREは何をしてすればいいのかわかりません。)検索できません。のエラー表示も表示されない状態です。
書いているphpスクリプトを順番に軽く説明します。
phpスクリプト
・データベースに接続
・検索窓に記入されたwordを元にsql文を作成する。
htmlスクリプト
・sqlに書かれている物を表示させている。
こんな感じです。
<?php // データベースの接続情報 define( 'DB_HOST', 'localhost'); define( 'DB_USER', 'root'); define( 'DB_PASS', ''); define( 'DB_NAME', 'board'); // タイムゾーン設定 割愛 // 変数の初期化 割愛 session_start(); // データベースに接続 try { $option = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_MULTI_STATEMENTS => false ); $pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); } catch(PDOException $e) { // 接続エラーのときエラー内容を取得する $error_message[] = $e->getMessage(); } //ここからデータを取得する $word = filter_input(INPUT_GET, 'word'); if ( !empty($word) ) { //SQL文の実行準備 $stmt=$pdo->prepare("SELECT * FROM zero WHERE LIKE '%$word%' ORDER BY post_date "); //変数の値をバインド $stmt->bindValue(':word', $word, PDO::PARAM_STR); // SQL実行 $stmt->execute(); } else{ $error_message[] = '検索できません。'; } // データベースの接続を閉じる $pdo = null; ?> </head> <form action="" method="POST"> <p> <input type="text" name="word" placeholder="キーワードを入力" size="40"><input type="submit" value="検索"> </p> </form> <hr> <section> <?php if( !empty($stmt) ){ ?> <?php foreach( $stmt as $value ){ ?> <article> <div class="info"> <h2><?php echo "名前: ".htmlspecialchars( $value['view_name'], ENT_QUOTES, 'UTF-8'); ?></h2> <h2><?php echo "ID:".htmlspecialchars( $value['ID'], ENT_QUOTES, 'UTF-8'); ?></h2> <time><?php echo date('Y年m月d日 H:i', strtotime($value['post_date'])); ?></time> </div> <?php printf ('<a href="echo.php?id=%s">%s</a>', urlencode($value['ID']), nl2br(htmlspecialchars($value['title'], ENT_QUOTES))); ?> </article> <?php } ?> <?php } ?> </body> </html>
実際のスクリプトは非常に長いので検索窓に関係するもののみをピックアップしています。
あなたの回答
tips
プレビュー