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 ?>
試したこと
模範解答のコードも実行してみましたが、同じエラーが表示されます。
回答3件
あなたの回答
tips
プレビュー