回答編集履歴

1

コメントを受け追記

2020/03/28 01:51

投稿

Take_it
Take_it

スコア357

test CHANGED
@@ -15,3 +15,41 @@
15
15
 
16
16
 
17
17
  意味をきちんと理解すれば、このような質問は出てこないと思いますが。
18
+
19
+
20
+
21
+ ######以下、コメントを受け追記
22
+
23
+ PHPマニュアル
24
+
25
+ https://www.php.net/manual/ja/pdo.error-handling.php
26
+
27
+
28
+
29
+ 公式に「エラーモードの記述は省略可能」とは謳われてないですよね?
30
+
31
+ 省略したことないんで断言はしませんが、デフォルトのモードがPDO::ERRMODE_SILENTとなっているので、まぁ省略してもERRMODE_SILENTになるのでしょう。
32
+
33
+
34
+
35
+ その上で、
36
+
37
+ > 注意:PDO::__construct() は、接続に失敗した場合は常に PDOException をスローします。 これは、現在設定されている PDO::ATTR_ERRMODE が何であっても同じです。例外を処理しないと、fatal エラーとなります。
38
+
39
+
40
+
41
+ とあるので、「接続に失敗した場合」については敢えてエラーモードを指定していなくても(SILENTであっても)catch (PDOException $e)が生きてきますが、逆に言うと接続失敗以外のエラーの場合にはPDOExceptionがスローされていないのでエラーをcatchした処理はできませんよね?
42
+
43
+
44
+
45
+ お使いの書籍がなんなのかわかりませんが、接続する「だけ」の場合は、エラーモードの指定は省略しても問題ないでしょう。接続失敗以外のエラーは出ないでしょうから。
46
+
47
+
48
+
49
+ 質問のようにクエリをなんらか投げるのなら、接続失敗以外のエラーをちゃんと捕まえられるようにエラーモードの設定は必須になります。
50
+
51
+
52
+
53
+ PHPマニュアルが読めれば出てこない質問です。
54
+
55
+ (意味をきちんと理解する=PHPマニュアルちゃんと読もう ということです)