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

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

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

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

PHP

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

HTML

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

Q&A

解決済

2回答

1815閲覧

PHP5.6.10 日本語の検索結果をデータベースから取得し、ページ遷移先で表示させたい

scksck

総合スコア27

MySQL

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

PHP

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

HTML

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

0グッド

0クリップ

投稿2016/03/28 09:17

編集2016/03/28 09:34

【実現したい仕組み】
①index.phpの検索欄に言葉を入力する
②action先のページ(search.php)にて、その言葉が、データベースの特定のレコードに部分一致したとき、その特定のレコードだけでなく、そのレコードから4項目を選び、内容をsearch.phpのテーブルタグ内に表示させる

【現在】
search.phpの「タイトル〜意見」は表示されています。しかし、いくら検索に適正な言葉を入力しても、テーブル内にデータベースの言葉が表示されない状況です。

色々試したのですがダメで、PHPの問題なのか、それともHTMLなのか、はたまたSQL文なのかが分からなくなってしまいました。
どなたか解決策をご存知のかた、教えていただきたいです。

初質問のためおかしな所ありましたらすみません。宜しくお願い致します。

以下、index.php(入力するページ)です

html

1form class="navbar-form navbar-left" method="get" role="search" action="search.php"> 2 <div class="form-group"> 3 <input type="text" class="form-control" placeholder="フリーワード" name="op_search"> 4 </div> 5 <button type="submit" class="btn btn-default">検索</button> 6 </form>

以下、search.php(表示させたいページ)です

PHP

1 2<?php 3 4 5 //データを取得する 6 $keyword = $_GET["op_search"]; 7 8 $con = mysql_connect('localhost', 'root', 'root'); 9 if (!$con) { 10 exit('データベースに接続できませんでした。'); 11 } 12 13 $result = mysql_select_db('xxx', $con); 14 if (!$result) { 15 exit('データベースを選択できませんでした。'); 16 } 17 18 $result = mysql_query('SET NAMES utf8', $con); 19 if (!$result) { 20 exit('文字コードを指定できませんでした。'); 21 } 22 $result = mysql_query("SELECT * FROM sp ORDER BY reg_date_sp DESC WHERE title LIKE '%$keyword%'", $con); 23?> 24 25<table> 26 <tr> 27 <td>タイトル</td> 28 <td>引用元</td> 29 <td>引用文</td> 30 <td>意見</td> 31 </tr> 32 33<?php 34 while ($data = mysql_fetch_array($result)) { 35 echo "<tr>"; 36 echo "<td>" . $data['1']. "</td>"; 37 echo "<td>" . $data['2']."</td>"; 38 echo "<td>" . $data['3']."</td>"; 39 echo "<td>" . $data['4'] ."</td>"; 40 echo "</tr>"; 41 } 42?> 43</table> 44 45<?php 46 $con = mysql_close($con); 47 if (!$con) { 48 exit('データベースとの接続を閉じられませんでした。'); 49 } 50?> 51

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

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

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

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

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

guest

回答2

0

ベストアンサー

PHP

1$result = mysql_query("SELECT * FROM sp ORDER BY reg_date_sp DESC WHERE title LIKE %'$keyword%'", $con); 2↓↓↓ 3$result = mysql_query("SELECT * FROM sp WHERE title LIKE '%$keyword%' ORDER BY reg_date_sp DESC", $con); 4```では? 5あと、`mysql`系のAPIは非推奨です。`mysqli`か`PDO`を使いましょう。 6 7また、入力された文字を直接SQLに入れてはいけません。SQLインジェクションされます。 8プリペアドステートメントを使いましょう。 9[http://php.net/manual/ja/pdo.prepared-statements.php](http://php.net/manual/ja/pdo.prepared-statements.php)

投稿2016/03/28 09:27

編集2016/03/28 09:31
shi_ue

総合スコア4437

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

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

KiyoshiMotoki

2016/03/28 09:30

WHERE句の前にORDER BY句があるのも、変じゃないでしょうか?
shi_ue

2016/03/28 09:31

本当だ・・・ これ動いてるのかな・・・
scksck

2016/03/28 09:55

shi_ue さん ご回答ありがとうございます。 句順、 '%$keyword%'、mysql→mysqliを変更しましたところ、無事に表示されました。決め手はmysqliでした。 初心者のためSQLインジェクション、プリペアードステートメントのことも知りませんでした。こちらもご丁寧に有り難うございます。
scksck

2016/03/28 10:01

2件頂いた中で直接解決に結びついたのでコチラをベストアンサーとさせていただきました。 ありがとうございました(^^)
guest

0

直接の回答ではありませんが、

まずはソースコードの先頭に以下の2行を追加して、再度 実行してみて下さい。

php

1error_reporting(E_ALL); 2ini_set('display_errors', '1');

これで、何かエラーが発生するとブラウザに表示してくれるようになります。

また、開発中はphp.iniファイルに以下の2行を設定しておくことをお勧めします。

sh

1error_reporting = E_ALL 2display_errors = On

こうしておけば、全てのソースコードに上の設定を追加したことになりますので。

投稿2016/03/28 09:38

編集2016/03/28 09:40
KiyoshiMotoki

総合スコア4791

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

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

scksck

2016/03/28 09:58

KiyoshiMotoki さん ご回答ありがとうございます。 さっそく追加、セット致しました。 関係のないところまでアドバイスしていただき、助かります。今後の開発に役立てます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問