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

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

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

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

PHP

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

Q&A

解決済

2回答

1784閲覧

検索フォームから受け取ったカラムの値を元に、対象のカラムのあるレコードを取得したい

yamaoka

総合スコア27

MySQL

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

PHP

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

0グッド

0クリップ

投稿2017/05/25 08:09

編集2017/05/25 08:15

###前提・実現したいこと
検索フォームからカラムの値を入力し、その値のカラムが含まれているレコードを取得する検索システムをphpで作りたいと思っています

###発生している問題・エラーメッセージ
書き方が間違っているというのはわかるのですが、どのように書き直したらよいかわからず詰まってしまいました

[25-May-2017 16:57:10 Asia/Tokyo] PHP Parse error: syntax error, unexpected '; ' (T_STRING) in /var/www/html/hira_test.php on line 23

###該当のソースコード

<!DOCTYPE html> <html> <form method="get" action="hira_test.php"> <p><input type="text" name="id11"><input type="submit" name="search" value="検索"></p> </form> </html> <?php $dsn ='mysql:dbname=kadai7;host=xxxxx;charset=utf8'; $user = 'xxxxxx'; $password = 'xxxxx'; if(isset($_GET['search'])){ $keyword = $_GET['keyword']; $keyword = htmlspecialchars($keyword, ENT_QUOTES); if($keyword !==''){ $dbh = new PDO($dsn, $user, $password); $dbh->query('SET NAMES utf8'); $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); //エラーが出ているのがこのセレクト文です $spl = "SELECT id11, id22, let FROM new_kadai7 WHERE $keyword"; $stmt = $dbh->prepare($sql); $stmt->bindValue(1, $keyword, PDO::PARAM_STR); $stmt->execute(); $dbh = nu;;; while($item = $stmt->fetch(PDO::FETCH_ASSOC)){ echo $item["id11"]; echo $item["id22"]; echo $item["let"]; } } } ?>

###試したこと
試した書き方は以下のとおりです。whereの条件としてフォームから受け取った値をどのように指定すればいいのかわかりません。
ご教授いただけませんでしょうか
$spl = 'SELECT id11, id22, let FROM new_kadai7 WHERE $_GET['keyword']';

$spl = 'SELECT id11, id22, let FROM new_kadai7 WHERE '$_GET['keyword']'';

$spl = "SELECT id11, id22, let FROM new_kadai7 WHERE '$_GET['keyword']'";

$spl = "SELECT id11, id22, let FROM new_kadai7 WHERE {$_GET['keyword']}";

$spl = 'SELECT id11, id22, let FROM new_kadai7 WHERE {$_GET['keyword']}';

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

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

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

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

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

m.ts10806

2017/05/25 08:15 編集

まず FORM  → FROM ですね。エラーメッセージ自体はSQLとは関係なさそうなのでこちらに書きます。まずはそこだけ直してみてください(GETで受取りたい名前の入力コントロールがないとかは気になりますが・・・)
yamaoka

2017/05/25 08:14

見落としていました。ありがとうございます
m.ts10806

2017/05/25 08:21

あとwhereは条件式です。SQL文として成り立ってないですね。 where {カラム名} = '{検索条件}' のようになるはずです。
yamaoka

2017/05/25 08:23

そうですね。ちょっと条件式ということを意識せずに欠いてしまっていました。ご指摘ありがとうございます
m.ts10806

2017/05/25 08:25

エラーの理由が分かりましたので回答書きました。あとはyamabejpさんのおっしゃるようなところに注意してコーディングしていってください。
yamaoka

2017/05/25 08:57

ありがとうございました
guest

回答2

0

テキストコピーして貼り付けてみると良く分かります。


↑最後のこいつは全角です。PHPでは半角にしないといけませんね。

投稿2017/05/25 08:23

編集2017/05/25 08:24
m.ts10806

総合スコア80842

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

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

0

ベストアンサー

大きく3つ

  • 「$sql」を「$spl」 と書いてある箇所がある
  • WHERE句がむちゃくちゃ(カラムの指定もないし、変数であたえるならキーワード自体をエンクロージャで囲む必要がある)
  • prepareで処理するのにsql文に直接変数を埋め込んでる

投稿2017/05/25 08:22

yambejp

総合スコア114742

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

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

yamaoka

2017/05/25 08:31

ありがとうございます 参考にさせていただき修正します
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問