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

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

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

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

PHP

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

Q&A

解決済

3回答

218閲覧

PHP MySQL データを取ってきた時のエラーについて

what_will_be...

総合スコア9

MySQL

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

PHP

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

0グッド

0クリップ

投稿2018/06/29 02:10

編集2018/06/29 03:03

Head First PHP & MySQL という本で勉強しています。
その中で、ユーザからアンケートの回答を受け取り、データベースにぶち込むという課題があるのですが、うまく行きません。

テーブルは、
ユーザ情報を記録する[user] 質問の内容を記録する[topic] ユーザの回答を記録する[response]
の3つで構成しています

各構成は
[user]テーブル
user_id(主キー) / username / password
[topic]テーブル
topic_id(主キー) / name / category
[response]テーブル
response_id(主キー) / *user_id / *topic_id / response
となっています。

発生している問題・エラーメッセージ

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in / test.php on line 23

該当のソースコード

php

1<?php 2 3//データベース情報 4require_once('connectvars.php'); 5//データベースに接続 6$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 7 8 9// ユーザがまだアンケートに回答していない場合、データベースには空のレスポンスを挿入 10$query = "SELECT * FROM response WHERE user_id = '" . $_SESSION['user_id'] . "'"; 11 12$data = mysqli_query($dbc, $query); 13 14if (mysqli_num_rows($data) == 0){ 15 //最初に、topicテーブルから項目idリストを取得 16 $query = 17 "SELECT topic_id FROM topic ORDER BY category_id, topic_id"; 18 $data = mysqli_query($dbc, $query); 19 20 echo $data; 21 22 $topicIDs = array(); 23 while ($row = mysqli_fetch_array($data)) { 24 array_push($topicIDs, $row['topic_id']); 25 } 26// response テーブルへ空のレスポンス行を項目ごとに挿入 27foreach ($topicIDs as $topic_id) { 28 $query = "INSERT INTO response (user_id, topic_id) VALUES ('" . $_SESSION['user_id'] . "', '$topic_id')"; 29 mysqli_query($dbc, $query); 30 } 31} 32 ?>

試したこと

模範解答のコードも実行してみましたが、同じエラーが表示されます。

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

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

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

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

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

kei344

2018/06/29 02:14

質問タイトルに phpmyadmin と有りますが、MySQL では?
date

2018/06/29 02:20

質問にある3つのテーブルが質問SQLテーブルと異っているのですが、正しいテーブル情報を教えてくれますか?
m.ts10806

2018/06/29 02:34

phpmyadmin はMySQLのデータを確認するためのツールなのでデータ取得先ではありません。(ここ間違えると後で痛い目にあいます)
m.ts10806

2018/06/29 02:44 編集

細かいですが。myspl → MySQL  「まいえすぴーえる」じゃなく「まいえすきゅーえる」です。本のタイトル・自身のコードもそうなってますよね。タグについているので実際はタイトルに入れなくてもいいですけど・・・。
Orlofsky

2018/06/29 02:49

Word Press って書いて質問してくると、この人プログラミングに向いていなそう、って思ってしまいます。
guest

回答3

0

上のテーブル情報通りだと

SELECT topic_id FROM mismatch_topic ORDER BY category_id, topic_id

category_id というカラムがないのでエラーになるのでは

投稿2018/06/29 02:38

date

総合スコア1820

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

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

0

エラーメッセージで調べれば解決方法は幾らでも出てくるので、
まずはエラーメッセージで調べることから始めてください。

PHPから出力されるエラーがあるということは何らかの作法に則っていないということです。
模範解答がどのよになっているかわかりませんが、必要な要素が揃っていないのではないでしょうか。

あと気にしてほしいのはいきなり出てきている$_SESSION['user_id']の存在。

投稿2018/06/29 02:37

編集2018/06/29 03:17
m.ts10806

総合スコア80850

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

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

kei344

2018/06/29 02:49

teratail のバグで記述内容がきれてますよ。(teratail はいつまでこのバグ直さないんだろう・・・)
m.ts10806

2018/06/29 03:18

ありがとうございます。修正しました。 直接入力してもなるんですよね…
guest

0

ベストアンサー

きょうの質問 の回答にもありますが、今となっては化石になった書籍で勉強されているようです。新しい本を買われては?

投稿2018/06/29 02:25

Orlofsky

総合スコア16415

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

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

m.ts10806

2018/06/29 02:38

本は2010年ですね・・・mysqli_*使っているだけまだマシでしょうけど;
退会済みユーザー

退会済みユーザー

2018/06/29 02:45 編集

オライリーだけど、英語版はそもそも2008年12月の本、なんて恐ろしい・・・。
Orlofsky

2018/06/29 02:46

新しくても使えない本がありますが、コンピュータ関係の技術書は発売日を確認するのは基本です。
what_will_be...

2018/06/29 03:06

わかりました。新しい本を買います! 新しくても使えないとのことですが、おすすめの本はありますか?
退会済みユーザー

退会済みユーザー

2018/06/29 03:21

新しい本は書評やレビューが少ないので、せめて誤字脱字による評価の悪いものには手を出さない、改定前のレビューも読む、 求めるレベル感と合わないと思ったらその本は売る、くらいのスタンスが良いのかもしれません。 初版がここ2年以内の発売で、PHP7に言及があるもので。 初歩であれば、自分のパソコンで開発環境を構築する方法の解説があるものを。 デバッグの仕方が分かるほうが効率よく学習できます。
Orlofsky

2018/06/29 07:21

最新の書籍情報は持っていないので今日の回答にあった PHPでデータベースに接続するときのまとめhttps://qiita.com/mpyw/items/b00b72c5c95aac573b71 でググったサイトを漁っては?
what_will_be...

2018/06/29 11:23

ありがとうございます。本を選ぶときの参考にさせていただきます。 みなさま、色々教えて頂きありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問