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

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

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

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

PHP

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

Q&A

解決済

1回答

4372閲覧

radioボタンを使って検索システムを作る

twin_bird

総合スコア230

MySQL

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

PHP

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

0グッド

0クリップ

投稿2015/09/23 09:27

radioボタンによって選択された値を元にデータベースを検索、検索結果を表示するというコードを書いたつもりですが、Catchable fatal error: Object of class mysqli_result could not be converted to string in ~ といったエラーがでてしまい、結果を表示することができません。

index.php <?php $connect = mysqli_connect('HOSTNAME','USER','PASS','DBNAME') or die('error'); echo 'success'; ?> <?php $post = $_POST["fruits"]; $query = mysqli_query( $connect,"select * from radiobutton_search where fruits = '$post'"); while($result = mysqli_fetch_assoc($query)){ echo $result['fruits']; } ?> index.html <form action="index.php" method="POST"> <input type="radio" name="fruits" value="バナナ">バナナ <input type="radio" name="fruits" value="りんご">りんご <input type="radio" name="fruits" value="オレンジ">オレンジ <input type="submit" value="検索"> </form> //値の検証 var_dump($query); object(mysqli_result)[2] public 'current_field' => int 0 public 'field_count' => int 2 public 'lengths' => null public 'num_rows' => int 1 public 'type' => int 0 var_dump($post); string 'りんご' (length=9)

checkboxで検索システムについても質問させていただいたのですが、どうやら似たようなエラーが出てしまいます。

optionタグによる検索、検索結果の表示はできたのですが、radioボタンの方はなぜかうまくいきません。。。

エラーを解決し、検索結果表示するにはどうしたらよいでしょうか?

※SQLインジェクションやバリデーションチェックは省略しております。

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

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

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

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

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

guest

回答1

0

ベストアンサー

php内での日本語エンコーディングはどうなってますか?
また、それはDB側とあっていますか?


PHP: エイリアスおよび非推奨の Mysqli 関数 - Manual
http://php.net/manual/ja/ref.mysqli.php

mysqliクラスとして使うのではなく関数呼び出しをするのは、非推奨とされています。
(関数呼び出しで記述されている文献は、すでに古いです。)
書き換えると、mysqli_stmtクラスのインスタンスである$queryに対して
$query->fetch_assoc()で結果を引き出すのが正しい書き方になります。

$connect = new mysqli('HOSTNAME','USER','PASS','DBNAME') or die('error');
$connectはmysqliクラスのインスタンスで、DB接続周りを保持・管理します。

$query = $connect->query("select * from radiobutton_search where fruits = '$post'");
$queryはmysqli_resultクラスのインスタンスで、クエリー結果を保持・管理します。

参考:PHP: MySQLi - Manual
http://php.net/manual/ja/book.mysqli.php

投稿2015/09/23 09:33

編集2015/09/23 10:39
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

twin_bird

2015/09/23 09:58

php.iniの設定はhttp://www.phpbook.jp/install/phpini/index5.htmlこちらのような設定をしておらず、特に設定していません。 MySQLは以下のようになっています。 +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
twin_bird

2015/09/23 10:01

whileのところを以下の通りに設定したら、検索結果を表示することができたのですが、疑問が残ります。 while ($row = $query->fetch_assoc()) { echo $row['fruits']; } ・元のコードの問題点 ・修正したコードの$query->fetch_assoc()部分がオブジェクトの操作だと思うのですが、どういうデータの受け渡しがされているのかわかりませんw
退会済みユーザー

退会済みユーザー

2015/09/23 10:39

回答内に加筆しました。
twin_bird

2015/09/23 10:55

回答ありがとうございます。 mysqliで問題なく検索システムを構築できると思っていたのですがどうやらそれもあまり良くないのですね。。。 接続型ではなく、オブジェクト指向型でかいていけるように勉強していきたいと思います。 ご丁寧な対応をしていただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問