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

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

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

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

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1944閲覧

PHP MYSQL 検索画面を作りたい

NAZA

総合スコア11

MySQL

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

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/03/17 08:49

下のコードをPDOに変換したいのですがうまくいきません。

<!-- search.html --> <!DOCTYPE html> <html> <head> <title>編集画面</title> <meta charset="UTF-8"> </head> <body> <form name="" method="post" action="002.php"> <table width="500" border="1" cellspacing="1" cellpadding="0"> <tr> <td>名前</td> <td> <input type="text" name="name" size="40" maxlength="255"> </td> </tr> <tr> <td>名前カナ</td> <td> <input type="text" name="name_kana" size="40" maxlength="255"> </td> </tr> <tr> <td>年齢</td> <td> <input type="text" name="age" size="40" maxlength="3"> </td> </tr> </table> <input type="submit" name="submit" value="検索"> <input type="reset" value="条件クリア"> </form> </body> </html>
<!-- 002.php --> <!DOCTYPE html> <html> <head> <title>PHP SEARCH RESULT</title> <meta charset="utf8"> </head> <body> <? $debug = false; //DB接続 mysql_connect("localhost","sample",""); mysql_select_db("sample"); if($debug) print_r($HTTP_POST_VARS); //エラーチェック //リクエストメソッドチェック if($REQUEST_METHOD != "POST") { print "Error: invalid method"; exit(); } //クエリ生成 $query = "SELECT * FROM search "; //検索条件生成 //名前 if(!empty($name)) { $name = addslashes($name); $where = "name = '$name' && "; } //名前カナ if(!empty($name_kana)) { $name_kana = addslashes($name_kana); $where .= "name_kana REGEXP '$name_kana' && "; } //年齢 if(!empty($age)) { $age = addslashes($age); $where .= "age = '$age' && "; } if(!empty($where)) { $where = substr($where, 0, -4); $where = "WHERE " . $where; } $query .= $where; if($debug) { print "<BR><BR>"; print $query; } $result = mysql_query($query); $num_rows = mysql_num_rows($result); if($num_rows == 0) $message = "該当するデータはありませんでした"; else $message = $num_rows . "件ヒットしました"; ?> 検索結果<br> <?=$message?> <table border=1> <tr><td>名前</td><td>名前カナ</td><td>年齢</td></tr> <? while($row = mysql_fetch_assoc($result)): ?> <tr><td><?=$row[name]?></td><td><?=$row[name_kana]?></td><td><?=$row[age]?></td></tr> <? endwhile; ?> </table> <a href="search.html">再検索</a> </body> </html>

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

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

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

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

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

CHERRY

2016/03/17 09:18

どのようにうまくいかないのか。 どのようなエラーメッセージがでるのか 具体的に記載をお願いします。
guest

回答2

0

ベストアンサー

現在の質問ではどこで悩んでいるのかがわかりづらいです。
質問するときは自分がどのような考えで、結果はどうなっているかまで書くようにしましょう。

・PHPがエラーでそもそも動いていないのか。
→ PHPのエラーで xxxxと出ています。など
・print $query; で出力されるクエリが想定しているものと違うのか。
→ 想定は xxxxだけど、動かしてみると△△△ になる。など
・クエリは想定通りなのに、SELECTした結果が想定と違うのか。

次回以降は以上をふまえて質問されると良いと思います。


[回答]

考えられる問題としては、formでPOSTした値が参照できていないように見えます。

$name を参照していますが、変数は定義されていません。
フォームからPOSTされたデータは、 $_POST['name'] という形で参照します。
http://php.net/manual/ja/reserved.variables.post.php

$HTTP_POST_VARS はphp 4.1.0から非推奨となりました。変わりに$_POSTを使うようにしましょう。


その他気になった点

$whereの定義をif文の中で行っているため、$nameだけ入力がない場合に、PHPのエラーが出ます。
PHP Notice: Undefined variable:

これを回避するために、あらかじめ $whereを空で用意しておき ifの中は全て .= としましょう。

$where = ""; if(!empty($name)) { $name = addslashes($name); $where .= "name = '$name' && "; }

WHERE句の作成はこのような方法もあります。

$where_array = array(); if(!empty($name)) { $where_array[] = "name = '$name'"; } if(!empty($name_kana)) { $where_array[] = "name_kana REGEXP '$name_kana'"; } // ~~~省略~~~ if (!empty($where_array)) { $query .= ' WHERE ' . implode(' && ', $where_array); }

投稿2016/03/18 06:53

rkojima

総合スコア421

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

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

0

[うまくいきません]
なるほど、SQLのシンタックスエラーになりやすいですね。

where 何かの条件 &&

考えが足りないのはここです。

投稿2016/03/18 01:13

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問