teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

アドバイスを元に、少し進みました(気がする)ので、追記しました。

2021/01/27 11:51

投稿

cambodia
cambodia

スコア12

title CHANGED
File without changes
body CHANGED
@@ -157,4 +157,58 @@
157
157
  私の記述では、fetchAllでデータベースのレコードを取得して、配列の状態になっていると理解しています。
158
158
  そこから、if文の条件(今回では、subject_idの条件)にあったレコードのstarカラムの値を変数に格納するところでつまづいていると考えています。
159
159
 
160
- どうぞよろしくお願いいたします。
160
+ どうぞよろしくお願いいたします。
161
+
162
+
163
+ #[追記]アドバイスを元にやってみた結果
164
+
165
+ tryの処理を以下の記述でやってみますと、
166
+
167
+ 2131646
168
+
169
+ という表示を取得できました。
170
+ これは、subject_idカラムの値が4レコード分連なったものです。
171
+
172
+ 1レコード目 2
173
+ 2レコード目 13
174
+ 3レコード目 16
175
+ 4レコード目 46
176
+
177
+ このsubject_idカラムの値と同じレコードにあるstarカラムの値を変数に格納したいです。
178
+
179
+ 例えば、
180
+ 1レコード目であれば、$star2という変数に、starカラムの値である 3 を代入する
181
+ 2レコード目であれば、$star13という変数に、starカラムの値である 1 を代入する
182
+ 3レコード目であれば、$star16という変数に、starカラムの値である 1 を代入する
183
+ 4レコード目であれば、$star46という変数に、starカラムの値である 1 を代入する
184
+
185
+ このやり方がさっぱりわかりません。
186
+
187
+
188
+
189
+
190
+ ```php
191
+ //starテーブルを読み込んで、
192
+ try{
193
+ $dbh = new PDO($dsn, $user, $password);
194
+ $sql = " SELECT * FROM star WHERE user_id = :user_id";
195
+ $stmt = $dbh->prepare($sql);
196
+ $stmt->bindValue(':user_id', $user_id);
197
+ $res = $stmt->execute();
198
+ $list = $stmt->fetchAll();
199
+
200
+ foreach($list as $data){
201
+
202
+ for ($i = 1; $i <= 50; $i++){
203
+ if($i == $data['subject_id']){
204
+ echo $i;
205
+ }
206
+ }
207
+
208
+ }
209
+
210
+ }catch(PDOException $e){
211
+ echo $e->getMessage();
212
+ exit;
213
+ }
214
+ ```