質問編集履歴

5

コメントされた内容についての修正

2018/12/20 07:35

投稿

zenobread
zenobread

スコア44

test CHANGED
File without changes
test CHANGED
@@ -134,6 +134,112 @@
134
134
 
135
135
  恐らくANDの使い方が間違っているのではないかと考えています。
136
136
 
137
+ ```php
138
+
139
+ <?php
140
+
141
+ try{
142
+
143
+ $db=new PDO('mysql:dbname=api;host=localhost;charset=utf8','root','vagrant');
144
+
145
+ $delete=$db->exec('DELETE FROM api_about');
146
+
147
+ $url_string=array("IB","SJ");
148
+
149
+ foreach ($url_string as $value) {
150
+
151
+ $url='http://localhost/json/API_'.rawurlencode($value).'.json';
152
+
153
+ $json=file_get_contents($url);
154
+
155
+ $arr=json_decode($json,true);
156
+
157
+ if($arr==NULL){
158
+
159
+ echo "MISS";
160
+
161
+ return;
162
+
163
+ }else{
164
+
165
+ $day_count=count($arr);
166
+
167
+ //次に$timeという配列変数を作る
168
+
169
+ $time=array();
170
+
171
+ $db=new PDO('mysql:dbname=api;host=localhost;charset=utf8','root','vagrant');//rootがname,vagrantがpassward
172
+
173
+ $stmt=$db->prepare('INSERT INTO api_about(station_name,station_time,station_number,looping,day_sp)VALUES(?,?,?,?,?)');
174
+
175
+ for($n=0;$n<=$day_count-1;++$n){
176
+
177
+ $json_count=count($arr[$n]["odpt:stationTimetableObject"]);
178
+
179
+ for($i=0;$i<=$json_count-1;++$i){
180
+
181
+ $stmt->bindValue(1,$arr[$n]["odpt:station"],PDO::PARAM_STR);
182
+
183
+ $stmt->bindValue(2,$arr[$n]["odpt:stationTimetableObject"][$i]["odpt:departureTime"],PDO::PARAM_STR);
184
+
185
+ $stmt->bindValue(3,$arr[$n]["odpt:stationTimetableObject"][$i]["odpt:trainNumber"],PDO::PARAM_STR);
186
+
187
+ $stmt->bindValue(4,$arr[$n]["odpt:railDirection"],PDO::PARAM_STR);
188
+
189
+ $stmt->bindValue(5,$arr[$n]["owl:sameAs"],PDO::PARAM_STR);
190
+
191
+ $stmt->execute();
192
+
193
+ }
194
+
195
+ }
196
+
197
+ }
198
+
199
+ }
200
+
201
+ $name="odpt.Station:JR-East.Yamanote.Ikebukuro";
202
+
203
+ $looping="odpt.StationTimetable:JR-East.Yamanote.Ikebukuro.OuterLoop.Weekday";
204
+
205
+ $result=$db->prepare("SELECT * FROM api_about WHERE TIME(station_time)>=NOW() AND station_name='$name' AND looping='$looping' ORDER BY TIME(station_time) LIMIT 1");
206
+
207
+ $result->execute();
208
+
209
+ $result->setFetchMode(PDO::FETCH_ASSOC);
210
+
211
+ $row=$result->fetch();
212
+
213
+ if($row==null)echo "MISS2";
214
+
215
+ echo $row['station_time'];
216
+
217
+ $db=null;
218
+
219
+ }catch(PDOException $e){
220
+
221
+ echo 'DB接続エラー:'.$e->getMessage();
222
+
223
+ }
224
+
225
+
226
+
227
+
228
+
229
+ ?>
230
+
231
+ ```
232
+
233
+
234
+
235
+ 追記2
236
+
237
+ ご教授いただいた通り修正してみましたが、同じくMISS2が出力されてしまいます。
238
+
239
+ ```php
240
+
241
+ <?php
242
+
137
243
  try{
138
244
 
139
245
  $db=new PDO('mysql:dbname=api;host=localhost;charset=utf8','root','vagrant');
@@ -198,7 +304,7 @@
198
304
 
199
305
  $looping="odpt.StationTimetable:JR-East.Yamanote.Ikebukuro.OuterLoop.Weekday";
200
306
 
201
- $result=$db->prepare("SELECT * FROM api_about WHERE TIME(station_time)>=NOW() AND station_name='$name' AND looping='$looping' ORDER BY TIME(station_time) LIMIT 1");
307
+ $result=$db->prepare("SELECT * FROM api_about WHERE TIME(station_time)>=NOW() AND station_name='${name}' AND looping='${looping}' ORDER BY TIME(station_time) LIMIT 1");
202
308
 
203
309
  $result->execute();
204
310
 
@@ -224,104 +330,4 @@
224
330
 
225
331
  ?>
226
332
 
227
-
228
-
229
- 追記2
230
-
231
- ご教授いただいた通り修正してみましたが、同じくMISS2が出力されてしまいます。
232
-
233
- ```php
234
-
235
- <?php
236
-
237
- try{
238
-
239
- $db=new PDO('mysql:dbname=api;host=localhost;charset=utf8','root','vagrant');
240
-
241
- $delete=$db->exec('DELETE FROM api_about');
242
-
243
- $url_string=array("IB","SJ");
244
-
245
- foreach ($url_string as $value) {
246
-
247
- $url='http://localhost/json/API_'.rawurlencode($value).'.json';
248
-
249
- $json=file_get_contents($url);
250
-
251
- $arr=json_decode($json,true);
252
-
253
- if($arr==NULL){
254
-
255
- echo "MISS";
256
-
257
- return;
258
-
259
- }else{
260
-
261
- $day_count=count($arr);
262
-
263
- //次に$timeという配列変数を作る
264
-
265
- $time=array();
266
-
267
- $db=new PDO('mysql:dbname=api;host=localhost;charset=utf8','root','vagrant');//rootがname,vagrantがpassward
268
-
269
- $stmt=$db->prepare('INSERT INTO api_about(station_name,station_time,station_number,looping,day_sp)VALUES(?,?,?,?,?)');
270
-
271
- for($n=0;$n<=$day_count-1;++$n){
272
-
273
- $json_count=count($arr[$n]["odpt:stationTimetableObject"]);
274
-
275
- for($i=0;$i<=$json_count-1;++$i){
276
-
277
- $stmt->bindValue(1,$arr[$n]["odpt:station"],PDO::PARAM_STR);
278
-
279
- $stmt->bindValue(2,$arr[$n]["odpt:stationTimetableObject"][$i]["odpt:departureTime"],PDO::PARAM_STR);
280
-
281
- $stmt->bindValue(3,$arr[$n]["odpt:stationTimetableObject"][$i]["odpt:trainNumber"],PDO::PARAM_STR);
282
-
283
- $stmt->bindValue(4,$arr[$n]["odpt:railDirection"],PDO::PARAM_STR);
284
-
285
- $stmt->bindValue(5,$arr[$n]["owl:sameAs"],PDO::PARAM_STR);
286
-
287
- $stmt->execute();
288
-
289
- }
290
-
291
- }
292
-
293
- }
294
-
295
- }
296
-
297
- $name="odpt.Station:JR-East.Yamanote.Ikebukuro";
298
-
299
- $looping="odpt.StationTimetable:JR-East.Yamanote.Ikebukuro.OuterLoop.Weekday";
300
-
301
- $result=$db->prepare("SELECT * FROM api_about WHERE TIME(station_time)>=NOW() AND station_name='${name}' AND looping='${looping}' ORDER BY TIME(station_time) LIMIT 1");
302
-
303
- $result->execute();
304
-
305
- $result->setFetchMode(PDO::FETCH_ASSOC);
306
-
307
- $row=$result->fetch();
308
-
309
- if($row==null)echo "MISS2";
310
-
311
- echo $row['station_time'];
312
-
313
- $db=null;
314
-
315
- }catch(PDOException $e){
316
-
317
- echo 'DB接続エラー:'.$e->getMessage();
318
-
319
- }
320
-
321
-
322
-
323
-
324
-
325
- ?>
326
-
327
333
  ```

4

{name}などの修正

2018/12/20 07:35

投稿

zenobread
zenobread

スコア44

test CHANGED
File without changes
test CHANGED
@@ -223,3 +223,105 @@
223
223
 
224
224
 
225
225
  ?>
226
+
227
+
228
+
229
+ 追記2
230
+
231
+ ご教授いただいた通り修正してみましたが、同じくMISS2が出力されてしまいます。
232
+
233
+ ```php
234
+
235
+ <?php
236
+
237
+ try{
238
+
239
+ $db=new PDO('mysql:dbname=api;host=localhost;charset=utf8','root','vagrant');
240
+
241
+ $delete=$db->exec('DELETE FROM api_about');
242
+
243
+ $url_string=array("IB","SJ");
244
+
245
+ foreach ($url_string as $value) {
246
+
247
+ $url='http://localhost/json/API_'.rawurlencode($value).'.json';
248
+
249
+ $json=file_get_contents($url);
250
+
251
+ $arr=json_decode($json,true);
252
+
253
+ if($arr==NULL){
254
+
255
+ echo "MISS";
256
+
257
+ return;
258
+
259
+ }else{
260
+
261
+ $day_count=count($arr);
262
+
263
+ //次に$timeという配列変数を作る
264
+
265
+ $time=array();
266
+
267
+ $db=new PDO('mysql:dbname=api;host=localhost;charset=utf8','root','vagrant');//rootがname,vagrantがpassward
268
+
269
+ $stmt=$db->prepare('INSERT INTO api_about(station_name,station_time,station_number,looping,day_sp)VALUES(?,?,?,?,?)');
270
+
271
+ for($n=0;$n<=$day_count-1;++$n){
272
+
273
+ $json_count=count($arr[$n]["odpt:stationTimetableObject"]);
274
+
275
+ for($i=0;$i<=$json_count-1;++$i){
276
+
277
+ $stmt->bindValue(1,$arr[$n]["odpt:station"],PDO::PARAM_STR);
278
+
279
+ $stmt->bindValue(2,$arr[$n]["odpt:stationTimetableObject"][$i]["odpt:departureTime"],PDO::PARAM_STR);
280
+
281
+ $stmt->bindValue(3,$arr[$n]["odpt:stationTimetableObject"][$i]["odpt:trainNumber"],PDO::PARAM_STR);
282
+
283
+ $stmt->bindValue(4,$arr[$n]["odpt:railDirection"],PDO::PARAM_STR);
284
+
285
+ $stmt->bindValue(5,$arr[$n]["owl:sameAs"],PDO::PARAM_STR);
286
+
287
+ $stmt->execute();
288
+
289
+ }
290
+
291
+ }
292
+
293
+ }
294
+
295
+ }
296
+
297
+ $name="odpt.Station:JR-East.Yamanote.Ikebukuro";
298
+
299
+ $looping="odpt.StationTimetable:JR-East.Yamanote.Ikebukuro.OuterLoop.Weekday";
300
+
301
+ $result=$db->prepare("SELECT * FROM api_about WHERE TIME(station_time)>=NOW() AND station_name='${name}' AND looping='${looping}' ORDER BY TIME(station_time) LIMIT 1");
302
+
303
+ $result->execute();
304
+
305
+ $result->setFetchMode(PDO::FETCH_ASSOC);
306
+
307
+ $row=$result->fetch();
308
+
309
+ if($row==null)echo "MISS2";
310
+
311
+ echo $row['station_time'];
312
+
313
+ $db=null;
314
+
315
+ }catch(PDOException $e){
316
+
317
+ echo 'DB接続エラー:'.$e->getMessage();
318
+
319
+ }
320
+
321
+
322
+
323
+
324
+
325
+ ?>
326
+
327
+ ```

3

一部修正

2018/12/20 06:59

投稿

zenobread
zenobread

スコア44

test CHANGED
File without changes
test CHANGED
@@ -78,7 +78,7 @@
78
78
 
79
79
  //ここからが問題
80
80
 
81
- $name="odpt.Station:JR-East.Yamanote.Shinjuku";
81
+ $name="odpt.Station:JR-East.Yamanote.Ikebukuro";
82
82
 
83
83
  $looping="odpt.StationTimetable:JR-East.Yamanote.Ikebukuro.OuterLoop.Weekday";
84
84
 
@@ -123,3 +123,103 @@
123
123
 
124
124
 
125
125
  どうかご教授お願いします。
126
+
127
+
128
+
129
+ 追記2
130
+
131
+ 一部修正すべきとご教示いただいたので今現在実行しているのは以下のコードです。
132
+
133
+ また$result内で使われているANDを使わず$nameだけで指定した場合実行が出来ました。
134
+
135
+ 恐らくANDの使い方が間違っているのではないかと考えています。
136
+
137
+ try{
138
+
139
+ $db=new PDO('mysql:dbname=api;host=localhost;charset=utf8','root','vagrant');
140
+
141
+ $delete=$db->exec('DELETE FROM api_about');
142
+
143
+ $url_string=array("IB","SJ");
144
+
145
+ foreach ($url_string as $value) {
146
+
147
+ $url='http://localhost/json/API_'.rawurlencode($value).'.json';
148
+
149
+ $json=file_get_contents($url);
150
+
151
+ $arr=json_decode($json,true);
152
+
153
+ if($arr==NULL){
154
+
155
+ echo "MISS";
156
+
157
+ return;
158
+
159
+ }else{
160
+
161
+ $day_count=count($arr);
162
+
163
+ //次に$timeという配列変数を作る
164
+
165
+ $time=array();
166
+
167
+ $db=new PDO('mysql:dbname=api;host=localhost;charset=utf8','root','vagrant');//rootがname,vagrantがpassward
168
+
169
+ $stmt=$db->prepare('INSERT INTO api_about(station_name,station_time,station_number,looping,day_sp)VALUES(?,?,?,?,?)');
170
+
171
+ for($n=0;$n<=$day_count-1;++$n){
172
+
173
+ $json_count=count($arr[$n]["odpt:stationTimetableObject"]);
174
+
175
+ for($i=0;$i<=$json_count-1;++$i){
176
+
177
+ $stmt->bindValue(1,$arr[$n]["odpt:station"],PDO::PARAM_STR);
178
+
179
+ $stmt->bindValue(2,$arr[$n]["odpt:stationTimetableObject"][$i]["odpt:departureTime"],PDO::PARAM_STR);
180
+
181
+ $stmt->bindValue(3,$arr[$n]["odpt:stationTimetableObject"][$i]["odpt:trainNumber"],PDO::PARAM_STR);
182
+
183
+ $stmt->bindValue(4,$arr[$n]["odpt:railDirection"],PDO::PARAM_STR);
184
+
185
+ $stmt->bindValue(5,$arr[$n]["owl:sameAs"],PDO::PARAM_STR);
186
+
187
+ $stmt->execute();
188
+
189
+ }
190
+
191
+ }
192
+
193
+ }
194
+
195
+ }
196
+
197
+ $name="odpt.Station:JR-East.Yamanote.Ikebukuro";
198
+
199
+ $looping="odpt.StationTimetable:JR-East.Yamanote.Ikebukuro.OuterLoop.Weekday";
200
+
201
+ $result=$db->prepare("SELECT * FROM api_about WHERE TIME(station_time)>=NOW() AND station_name='$name' AND looping='$looping' ORDER BY TIME(station_time) LIMIT 1");
202
+
203
+ $result->execute();
204
+
205
+ $result->setFetchMode(PDO::FETCH_ASSOC);
206
+
207
+ $row=$result->fetch();
208
+
209
+ if($row==null)echo "MISS2";
210
+
211
+ echo $row['station_time'];
212
+
213
+ $db=null;
214
+
215
+ }catch(PDOException $e){
216
+
217
+ echo 'DB接続エラー:'.$e->getMessage();
218
+
219
+ }
220
+
221
+
222
+
223
+
224
+
225
+ ?>

2

質問の修正

2018/12/20 06:54

投稿

zenobread
zenobread

スコア44

test CHANGED
File without changes
test CHANGED
@@ -82,7 +82,7 @@
82
82
 
83
83
  $looping="odpt.StationTimetable:JR-East.Yamanote.Ikebukuro.OuterLoop.Weekday";
84
84
 
85
- $result=$db->prepare("SELECT * FROM api_about WHERE TIME(station_time)>=NOW() AND station_name='$name' AND day_sp='$looping' ORDER BY TIME(station_time) LIMIT 1");
85
+ $result=$db->prepare("SELECT * FROM api_about WHERE TIME(station_time)>=NOW() AND station_name='$name' AND looping='$looping' ORDER BY TIME(station_time) LIMIT 1");
86
86
 
87
87
  $result->execute();
88
88
 

1

質問の修正

2018/12/20 06:41

投稿

zenobread
zenobread

スコア44

test CHANGED
File without changes
test CHANGED
@@ -118,6 +118,8 @@
118
118
 
119
119
  またデータが存在することも確認しています。
120
120
 
121
+ 最後のMISS2がechoで返されているので取り出すことが出来ていない状況です。
122
+
121
123
 
122
124
 
123
125
  どうかご教授お願いします。