質問編集履歴
4
誤字修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -76,13 +76,13 @@
|
|
76
76
|
|
77
77
|
★追記
|
78
78
|
|
79
|
-
prepare()で
|
79
|
+
prepare()で変な構文だったり存在しないテーブルを指定しても、prepareの返り値がfalseになることはありませんでした。
|
80
80
|
|
81
|
-
環境の問題で、ネットワーク遮断するとどうなるかとか確認できませんでしたが、
|
81
|
+
環境の問題で、ネットワークを遮断するとどうなるかとか確認できませんでしたが、
|
82
82
|
|
83
83
|
まあおそらくDBにはアクセスしていないものと思うことにしました。
|
84
84
|
|
85
|
-
正直、phpの公式サイトに書いてるサンプルコードは役に立ちませんね。
|
85
|
+
正直、phpの公式サイトに書いてるサンプルコードは役に立ちませんね。DBのドライバによるのかと思いますが、Postgresqlの場合再現できません。
|
86
86
|
|
87
87
|
|
88
88
|
|
3
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -74,7 +74,15 @@
|
|
74
74
|
|
75
75
|
まあデータベースハンドラのメソッドなんでDBにアクセスする可能性があるので、一応PDO::errorInfo()を組み込むことにします。
|
76
76
|
|
77
|
+
★追記
|
77
78
|
|
79
|
+
prepare()でsyntacs error とか存在しないテーブルを指定しても、PDO::errorInfo()の返り値がfalseになることはなかったです。
|
80
|
+
|
81
|
+
環境の問題で、ネットワーク遮断するとどうなるかとか確認できませんでしたが、
|
82
|
+
|
83
|
+
まあおそらくDBにはアクセスしていないものと思うことにしました。
|
84
|
+
|
85
|
+
正直、phpの公式サイトに書いてるサンプルコードは役に立ちませんね。
|
78
86
|
|
79
87
|
|
80
88
|
|
2
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,10 +1,4 @@
|
|
1
|
-
phpのPDOを使ってDBを更新しているプログラムがあります。
|
1
|
+
phpのPDOを使ってDBを更新しているプログラムがあり、errorInfo()を使ってエラー情報を取得したいと思っています。
|
2
|
-
|
3
|
-
エラーコードを取得するために、PDO::errorInfo()を使う予定ですが、
|
4
|
-
|
5
|
-
erroInfo()による取得できた配列の2番目に「ドライバ固有のエラーコード」を取れるようです。
|
6
|
-
|
7
|
-
http://php.net/manual/ja/pdo.errorinfo.php
|
8
2
|
|
9
3
|
|
10
4
|
|
@@ -16,11 +10,25 @@
|
|
16
10
|
|
17
11
|
<質問1>
|
18
12
|
|
13
|
+
エラーコードを取得するために、PDO::errorInfo()を使う予定ですが、
|
14
|
+
|
15
|
+
erroInfo()による取得できた配列の2番目に「ドライバ固有のエラーコード」を取れるようです。
|
16
|
+
|
17
|
+
http://php.net/manual/ja/pdo.errorinfo.php
|
18
|
+
|
19
19
|
しかし、どんだけWebを探しても、「ドライバ固有のエラーコード」の一覧を見つけられません。
|
20
20
|
|
21
21
|
DBはPostgresです。
|
22
22
|
|
23
23
|
ご存知のかた、URLを教えていただけないですか。
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
★追記
|
28
|
+
|
29
|
+
相変わらずわからないです。正直、「ドライバ固有のエラーメッセージ」が出れば問題ないと思うので、よしとします。
|
30
|
+
|
31
|
+
もし、分かる人がいれば教えてください。
|
24
32
|
|
25
33
|
|
26
34
|
|
@@ -32,9 +40,19 @@
|
|
32
40
|
|
33
41
|
「ドライバ固有のエラーメッセージ」にはキー重複に関するメッセージが帰ってきました。
|
34
42
|
|
35
|
-
|
43
|
+
なぜ、00000が帰ってきたのでしょうか?
|
36
44
|
|
37
45
|
PDOStatement::errorInfo()を使えば、正しい「SQLSTATE エラーコード」を取得できるのは確認していますが、http://php.net/manual/ja/pdo.errorinfo.phpを見てもPDO::errorInfo()のだめな理由がよくわかりません。
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
★追記
|
50
|
+
|
51
|
+
おそらくですが、わかりました。
|
52
|
+
|
53
|
+
PDO::errorInfo()は、「データベースハンドラにおける直近の操作に関連する SQLSTATE を取得する」ようです。ですので、PDOのnew したオブジェクトのメソッド(prepare、rollback、commitなど)を実行したときに発生したエラーのみ取得できると思われます。
|
54
|
+
|
55
|
+
PDOStatement::errorInfo()はprepareStatementオブジェクトのメソッドを実行(executeなど)を実行したときに発生したエラーのみ取得できるエラーのようですね。
|
38
56
|
|
39
57
|
|
40
58
|
|
@@ -48,4 +66,18 @@
|
|
48
66
|
|
49
67
|
|
50
68
|
|
69
|
+
★追記
|
70
|
+
|
71
|
+
よくわからないですが、対応方法は決めました。
|
72
|
+
|
73
|
+
prepare()でDBにアクセスするかどうかは、ネットを見ると意見が別れているようです。なんで???
|
74
|
+
|
75
|
+
まあデータベースハンドラのメソッドなんでDBにアクセスする可能性があるので、一応PDO::errorInfo()を組み込むことにします。
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
|
82
|
+
|
51
83
|
質問が3つありますが、1つでもお答えいただければ助かります。
|
1
誤字の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -5,6 +5,12 @@
|
|
5
5
|
erroInfo()による取得できた配列の2番目に「ドライバ固有のエラーコード」を取れるようです。
|
6
6
|
|
7
7
|
http://php.net/manual/ja/pdo.errorinfo.php
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
※エラー発生時にexceptionを発生する設定にすれば簡単に行くのは知っていますが、
|
12
|
+
|
13
|
+
諸事情によりerrorInfo()を使った方法でしか実現したいです。
|
8
14
|
|
9
15
|
|
10
16
|
|
@@ -42,4 +48,4 @@
|
|
42
48
|
|
43
49
|
|
44
50
|
|
45
|
-
|
51
|
+
質問が3つありますが、1つでもお答えいただければ助かります。
|