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

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

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

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

PHP

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

Q&A

解決済

1回答

340閲覧

フォーム送信した情報に該当するデータをMySQLから取得したい

anl

総合スコア5

MySQL

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

PHP

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

0グッド

0クリップ

投稿2018/01/26 07:05

PHPでフォーム送信、MySQLからのデータ取得

コーディング初心者です。
PHPで「地名」「年」「月」「日」を入力しフォーム送信すると、
MySQL内のDBに登録しているその入力情報に該当するデータが表示されるというプログラムを作っています。
しかし、すべての結果を表示するのがうまくいきません。
上4つの事項に合致する条件のデータをDBから出し、出力したいです。

例:
登録データは東京都内の過去の気象情報
入力→練馬区、2012年、3月、5日
出力→練馬区、2012年、3月、5日、晴れ

以下に現在のコードと問題があると思われるコードを書きます。

発生している問題・エラーメッセージ

入力側コードはこのようになっています。

HTML

1<form method="get" action="result.php" name="form"> 2 <p> 3 場所と日付を記入してください。その場所がその日、どのような天気であったか表示します。 4 </p> 5 <span>東京都内の区 6 <br> 7 <input type="text" name="place"> 8 </span> 9 <br> 10 <br> 11 <span>年(2012/12/1~2017/12/1) 12 <input type="text" name="year"> 13 /</span> 14 <span>月 15 <input type="text" name="month"> 16 /</span> 17 <span>日 18 <input type="text" name="day"> 19 /</span> 20 <br> 21 <p><input type="submit" value="Submit"></p> 22</form>

該当のソースコード

foreachがいけないという警告が出ますが、正直なところ解決策が全然わかりません…。
どのように記述すれば冒頭分のような結果にシンプルに出力できるか教えていただきたいです。

PHP

1<html> 2 <head> 3 <meta charset="utf-8"> 4 <title>result</title> 5 </head> 6 <body> 7 <?php 8 9 mysql_set_charset('utf8', $db_selected); 10 ini_set('display_errors',1); 11 12 $dbh = new PDO('mysql:host=;dbname=;charset=utf8mb4','root',''); 13 print("CONNECT SUUCESS<br/>"); 14 15 //フォームで送られてきた情報 16 $place = $_GET["place"]; 17 18 $year = $_GET['year']; 19 20 $month = $_GET['month']; 21 22 $day = $_GET['day']; 23 24 $data = "SELECT * FROM table_data WHERE place=$place and year=$year and month=$month and day=$day"; 25 26 $result = $dbh->query($data); 27 28 print("QUERY SUUCESS<br/>"); 29 30 foreach ($result as $row) { 31 32 echo $value[place]."区"; 33 34 echo '<br>'; 35 36 echo $row['year']."/".$row['month']."/".$row['day']; 37 38 echo '<br>'; 39 40 echo $row['weather']; 41 42 echo '<br>'; 43 44 break; 45 } 46 47 48 49 ?> 50 </body> 51</html> 52 53

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

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

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

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

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

guest

回答1

0

ベストアンサー

place=$place

は、ダメですねせめて

place='$place'

となっていないと。
PDOをつかっているならpreparedで処理して下さい
SQL文に直接ユーザーから渡された汚染されたデータを書き込むのはNGです

投稿2018/01/26 07:07

yambejp

総合スコア114572

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

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

anl

2018/01/26 07:14

迅速なご回答本当にありがとうございます! 実行したところすぐに解決いたしました。 今後書き方には気をつけます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問