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

回答編集履歴

3

修正

2019/01/31 21:50

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -23,9 +23,9 @@
23
23
  ```
24
24
 
25
25
  もちろんこれだけでは十分ではありません。
26
- 次のcommentsのところはループの中で実行しているわけですし、紐づく情報を得ようとしているのでしたら1回失敗したらそれ以降もうまくいくとは限りません。(むしろうまくいくわけではありません)
26
+ 次のcommentsのところはループの中で実行しているわけですし、紐づく情報を得ようとしているのでしたら1回失敗したらそれ以降もうまくいくとは限りません。(むしろうまくいくはずがありません)
27
27
 
28
- できればtry-catchで囲み、Exceptionを補足するような仕組みにしてください。
28
+ できればtry-catchで囲み、Exceptionを捕捉するような仕組みにしてください。
29
29
 
30
30
 
31
31
  というか何度もSQLを実行するのは結構無駄です。

2

修正

2019/01/31 21:50

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -25,8 +25,11 @@
25
25
  もちろんこれだけでは十分ではありません。
26
26
  次のcommentsのところはループの中で実行しているわけですし、紐づく情報を得ようとしているのでしたら1回失敗したらそれ以降もうまくいくとは限りません。(むしろうまくいくわけではありません)
27
27
 
28
+ できればtry-catchで囲み、Exceptionを補足するような仕組みにしてください。
29
+
30
+
28
31
  というか何度もSQLを実行するのは結構無駄です。
29
- yambejpさんのSQLを実行するのが良いのではないでしょうか。
32
+ yambejpさんのような一発で取得するSQLを実行するのが良いのではないでしょうか。
30
33
  取得した後に表示部分は多少うまいことやる必要がありますが、
31
34
  何度もSQLを実行してループするよりは良いと思います。
32
35
 

1

追記

2019/01/31 12:00

投稿

m.ts10806
m.ts10806

スコア80888

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