質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

26545閲覧

検索フォームで入力した値を含むデータを表示させたい

kanitomi

総合スコア24

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/06/05 12:51

###やりたいこと
top画面の検索フォームでキーワードを入力して
そのキーワードを含むデータを表示させたい。

例:「カレー」を入力すると、DBからカレーのみ表示される

###現在の状態
環境:ローカル(MAMP)
php:5.6.10


DB情報

テーブル(kensaku)
カラム(message)
データ

カレー
パスタ
うどん


top.html

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>プラン一覧</title> <link rel="stylesheet" href="css/base.css"> </head> <body> <form action = "kensaku.php" method="post"> <input type="text" name="word"> <input type="submit" value="検索"> </form> </body> </html>

kensaku.php

<?php require('my_dbconnect.php');//DB接続 $KEY = mysql_real_escape_string($_POST['word']); $sql = "SELECT * FROM kensaku WHERE message LIKE '%$KEY%'";//SQL文作成 $recordSet = mysqli_query($db, $sql);//DBとSQL文を実行 while ($table = mysqli_fetch_assoc($recordSet)) { ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>検索結果</title> </head> <body> <?php while ($table = mysqli_fetch_assoc($recordSet)) { ?> <p><?php print(htmlspecialchars($table['message'])); ?></p> <?php } ?> </body> </html>

###確認できていること

  • DB接続はできている
  • top.htmlで入力したキーワードは以下のコードではカレーと表示されることは確認
$KEY = mysql_real_escape_string($_POST['word']); print($KEY)
  • phpmyadminにて、LIKEの後をカレーと入力すれば、正常に表示されることは確認
SELECT * FROM kensaku WHERE message LIKE '%カレー%'

###聞きたいこと
上記の内容から、LIKEの後の変数が処理できていないと思っているのですが
どのように書けばいいのかわかりません。
何卒お助けいただきたいです。。。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

echo $sql;
で分かるかと。

投稿2016/06/05 12:55

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kanitomi

2016/06/05 13:21 編集

早々のご回答ありがとうございます。 以下、実行結果ご報告します。 表示結果としては、以下となりました。やはりLIKEの中身の変数がうまく代入できてないようです、、、 <<表示結果>> SELECT * FROM kensaku WHERE message LIKE '%%' もしその他方法あれば、教えていただきたいです。
guest

0

ベストアンサー

PHP

1$sql = "SELECT * FROM kensaku WHERE message LIKE '%" . $KEY . "%'";//SQL文作成

PHP

1$sql = "SELECT * FROM kensaku WHERE message LIKE '%${KEY}%'";//SQL文作成

投稿2016/06/05 12:56

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kanitomi

2016/06/05 13:17

早々のご回答ありがとうございます。 以下、実行結果ご報告します。 >$sql = "SELECT * FROM kensaku WHERE message LIKE '%" . $KEY . "%'"; こちらで変更した結果 何も表示されませんでした。 sublimeで入力してるのですが. $KEY .よりあとの%などが正常な値として処理されてないためかと思われます。(※正常ならば後ろの%が緑色になってるはずかと…) 参照キャプチャ:https://gyazo.com/29c63e82e242a97057af5bb2c65f973a >$sql = "SELECT * FROM kensaku WHERE message LIKE '%${KEY}%'";//SQL文作成 こちらで変更した結果 テーブル内のすべてが表示されました。 ただこちらの場合は、コード的には変数も、%もコードとして認識できているようなので、なぜすべて表示されてしまうのか… 参照キャプチャ:https://gyazo.com/06b2432b2ef4f5393d7323039b13b0a2 <<実行結果>> カレー パスタ うどん もしその他方法あれば、教えていただきたいです。
takasima20

2016/06/06 09:21

とりあえず、$KEYにちゃんと値がとれてるかの確認からしましょう。 あと、SQL で % をつける意味は分かってるんですよね? 完全一致なら使う必要はありません。
kanitomi

2016/06/06 14:23

>takasima20さん $KEYでは値が取れていることは確認しております。 完全一致ではないです。%は理解してつけています。 「'%${KEY}%'」を「'%{$KEY}%'」に変えたら期待する結果となりましたので ベストアンサーとさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問