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

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

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

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

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

phpMyAdmin

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

PHP

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Q&A

解決済

2回答

757閲覧

PHPでオリジナルECサイトにてキーワード検索機能を追加したいのですが、SQL文に検索ワードを入れられていないのか、正常に作動しません。

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

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

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

phpMyAdmin

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

PHP

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

0グッド

0クリップ

投稿2019/07/15 10:56

前提・実現したいこと

PHPとMySQLを使いMVCでオリジナルECサイトを製作中です。
キーワード検索機能を追加したいのですが、下記のコードを書き実行しても結果が反映されず、実行する前のページのままになってしまいます。
$_POST['word']に検索フォームに入力した文字が入っていたのはprint_rで確認しました。
SQL文で書き方を間違えていると思うのですが、自分で何回読んでも解決策がわかりません。

PHP

1//home_view.php 2//省略 3<form method="post"> 4 <input type="text" name="word"> 5 <input type="hidden" name="search" value="search"> 6 <input type="submit" value="検索"> 7</form> 8//省略

PHP

1//home_controller.php 2//省略 3//POSTされた場合 4if ($_SERVER['REQUEST_METHOD'] === 'POST') { 5 6 $search = search_post_check(); 7 8 if ($search === 'search') { 9 //データチェック 10 word_check(); 11 //問題がなければ指示に従いデータを読み込む 12 $data = search_data($dbh); 13 } 14} //POSTの終了 15 16//省略

PHP

1//home_model.php 2//省略 3function search_post_check() { 4 if (isset($_POST['saerch']) === TRUE) { 5 $search = trim($_POST['search']); 6 return $search; 7 } 8} 9 10function word_check() { 11 global $errors; 12 if ($_POST['word'] === '') { 13 $errors[] = "文字を入力してください"; 14 } 15} 16 17function search_data($dbh) { 18 global $errors; 19 if (count($errors) === 0) { 20 $rows = search_data_read($dbh); 21 return $rows; 22 } 23} 24 25function search_data_read($dbh) { 26 $sql = 'select ec_item_master.item_id, name, team, brand, price, img, status, stock, ec_item_master.create_datetime 27 from ec_item_master 28 left outer join ec_item_stock 29 on ec_item_master.item_id = ec_item_stock.item_id 30 where ec_item_master.status = 1 31 and name like ? 32 order by item_id desc'; 33 $stmt = $dbh->prepare($sql); 34 $stmt->bindvalue(1, $_POST['word'], PDO::PARAM_STR); 35 $stmt->execute(); 36 $rows = $stmt->fetchAll(); 37 38 return $rows; 39} 40//省略

大変読みにくく、細かい修正点もたくさんあると思いますが、検索結果が反映されない問題点だけでもまずは上げていただけるとありがたいです。
先輩方、よろしくお願い致します。

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

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

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

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

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

guest

回答2

0

一箇所、$_POST['search']を$_POST['saerch']と書いていました。
チェックミスです。その後また別のエラーが出ましたが、また別の質問として投稿させていただきました。
回答、閲覧ありがとうございました。

投稿2019/07/15 15:57

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Orlofsky

2019/07/15 15:59

ベストアンサーは取り消せます。
退会済みユーザー

退会済みユーザー

2019/07/15 16:12

取り消したほうがいいでしょうか、、回答していただけただけでありがたいのでベストアンサーのままでもいいかなと思うのですが、、 他のエラーが出て別の質問投稿させていただいたので、もしお時間ありましたら一度そちらも拝見していただけるとありがたいです。 ありがとうございました。
guest

0

ベストアンサー

質問に2つのテーブルのCREATE TABLE文を追記されては?

SQL

1select ec_item_master.item_id, name, team, brand, price, img, status, stock, ec_item_master.create_datetime 2from ec_item_master 3left outer join ec_item_stock 4on ec_item_master.item_id = ec_item_stock.item_id 5where ec_item_master.status = 1 6-- and name like ? -- 7order by item_id desc';

でSQLを実行すると何件か表示されますか?

$_POST['word']に検索フォームに入力した文字が入っていたのはprint_rで確認しました。

の内容を加えて ↓ xxxxx が検索対象の文字列

SQL

1select ec_item_master.item_id, name, team, brand, price, img, status, stock, ec_item_master.create_datetime 2from ec_item_master 3left outer join ec_item_stock 4on ec_item_master.item_id = ec_item_stock.item_id 5where ec_item_master.status = 1 6and name like '%xxxxx%' 7order by item_id desc';

で何件か表示されますか?

投稿2019/07/15 12:52

Orlofsky

総合スコア16415

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

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

退会済みユーザー

退会済みユーザー

2019/07/15 14:33

回答ありがとうございます。どちらも全件表示されてしまいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問