回答編集履歴

3

修正

2019/01/31 21:50

投稿

m.ts10806
m.ts10806

スコア80852

test CHANGED
@@ -48,11 +48,11 @@
48
48
 
49
49
  もちろんこれだけでは十分ではありません。
50
50
 
51
- 次のcommentsのところはループの中で実行しているわけですし、紐づく情報を得ようとしているのでしたら1回失敗したらそれ以降もうまくいくとは限りません。(むしろうまくいくわけではありません)
51
+ 次のcommentsのところはループの中で実行しているわけですし、紐づく情報を得ようとしているのでしたら1回失敗したらそれ以降もうまくいくとは限りません。(むしろうまくいくはずがありません)
52
52
 
53
53
 
54
54
 
55
- できればtry-catchで囲み、Exceptionを補足するような仕組みにしてください。
55
+ できればtry-catchで囲み、Exceptionを捕捉するような仕組みにしてください。
56
56
 
57
57
 
58
58
 

2

修正

2019/01/31 21:50

投稿

m.ts10806
m.ts10806

スコア80852

test CHANGED
@@ -52,9 +52,15 @@
52
52
 
53
53
 
54
54
 
55
+ できればtry-catchで囲み、Exceptionを補足するような仕組みにしてください。
56
+
57
+
58
+
59
+
60
+
55
61
  というか何度もSQLを実行するのは結構無駄です。
56
62
 
57
- yambejpさんのSQLを実行するのが良いのではないでしょうか。
63
+ yambejpさんのような一発で取得するSQLを実行するのが良いのではないでしょうか。
58
64
 
59
65
  取得した後に表示部分は多少うまいことやる必要がありますが、
60
66
 

1

追記

2019/01/31 12:00

投稿

m.ts10806
m.ts10806

スコア80852

test CHANGED
@@ -4,4 +4,62 @@
4
4
 
5
5
  考え方が逆です。
6
6
 
7
- 用意したデータベース情報にPHPから接続してください。プログラムが先ではありません。
7
+ 用意したデータベース情報(テーブル・カラム含む)にPHPから接続してSQLを作ってください。プログラムが先ではありません。
8
+
9
+
10
+
11
+ エラーについて:
12
+
13
+ データが取得できる前提で組まれています。
14
+
15
+ ```php
16
+
17
+ $st = $pdo->query("SELECT * FROM post ORDER BY no DESC");
18
+
19
+ $posts = $st->fetchAll();
20
+
21
+ ```
22
+
23
+ [pdo::query](http://php.net/manual/ja/pdo.query.php)は失敗したらfalseを返します。
24
+
25
+ > 返り値
26
+
27
+ PDO::query() は、PDOStatement オブジェクトを返します。 失敗した場合は FALSE を返します。
28
+
29
+
30
+
31
+ ということは、falseが返った場合はfetchAllどころじゃないですよね。
32
+
33
+ せめて$stのtrue/false判定を入れてください。
34
+
35
+ ```php
36
+
37
+ $st = $pdo->query("SELECT * FROM post ORDER BY no DESC");
38
+
39
+ if($st){
40
+
41
+ $posts = $st->fetchAll();
42
+
43
+ }
44
+
45
+ ```
46
+
47
+
48
+
49
+ もちろんこれだけでは十分ではありません。
50
+
51
+ 次のcommentsのところはループの中で実行しているわけですし、紐づく情報を得ようとしているのでしたら1回失敗したらそれ以降もうまくいくとは限りません。(むしろうまくいくわけではありません)
52
+
53
+
54
+
55
+ というか何度もSQLを実行するのは結構無駄です。
56
+
57
+ yambejpさんのSQLを実行するのが良いのではないでしょうか。
58
+
59
+ 取得した後に表示部分は多少うまいことやる必要がありますが、
60
+
61
+ 何度もSQLを実行してループするよりは良いと思います。
62
+
63
+
64
+
65
+ ※そもそも質問者さんはプログラムからDBを利用するというところの感覚がまだ薄いように思います。基本形の解説記事を熟読されたほうが良いのではないでしょうか。