回答編集履歴

2

回答を修正

2016/10/27 14:22

投稿

KiyoshiMotoki
KiyoshiMotoki

スコア4791

test CHANGED
@@ -73,3 +73,31 @@
73
73
  `SQLSTATE[3D000]`というエラーが返されるようです。
74
74
 
75
75
  (紛らわしいですねw)
76
+
77
+
78
+
79
+ # 追記
80
+
81
+
82
+
83
+ > どういうわけか、DSN文字列にPDOまたはMySQLが解釈できないオプションが含まれている場合にも
84
+
85
+ SQLSTATE[3D000]というエラーが返されるようです。
86
+
87
+
88
+
89
+ について追って確認してみたところ、正しくは
90
+
91
+ ```
92
+
93
+ DSN文字列にPDOまたはMySQLが解釈できない文字列が含まれている場合、【それ以降のオプションが無視される】。
94
+
95
+ ```
96
+
97
+ という動作になるようです。
98
+
99
+
100
+
101
+ `port:3307`のように、解釈不可能な文字列をDSNの先頭や末尾など、様々な位置に挿入してみると、
102
+
103
+ 挿入した位置によってエラーの内容が変わることが確認できました。

1

回答を修正

2016/10/27 14:22

投稿

KiyoshiMotoki
KiyoshiMotoki

スコア4791

test CHANGED
@@ -21,3 +21,55 @@
21
21
 
22
22
 
23
23
  そのようなことがないか、もう一度確認してみてください。
24
+
25
+
26
+
27
+ # 修正
28
+
29
+
30
+
31
+ データベース名ではなく、ホスト名(と、ポート番号)の指定に誤りがありました。
32
+
33
+
34
+
35
+ check.php の変数`$SERV`を、以下のように修正してみてください。
36
+
37
+ ##### Before
38
+
39
+ ```php
40
+
41
+ $SERV="127.0.0.1;port:3307";
42
+
43
+ ```
44
+
45
+
46
+
47
+ ##### After
48
+
49
+ ```php
50
+
51
+ $SERV="127.0.0.1:3307";
52
+
53
+ ```
54
+
55
+ または
56
+
57
+ ```php
58
+
59
+ $SERV="127.0.0.1;port=3307";
60
+
61
+ ```
62
+
63
+ [http://php.net/manual/ja/ref.pdo-mysql.connection.php](http://php.net/manual/ja/ref.pdo-mysql.connection.php)
64
+
65
+ > より完全な例は、このようになります。
66
+
67
+ mysql:host=localhost;port=3307;dbname=testdb
68
+
69
+
70
+
71
+ どういうわけか、DSN文字列にPDOまたはMySQLが解釈できないオプションが含まれている場合にも
72
+
73
+ `SQLSTATE[3D000]`というエラーが返されるようです。
74
+
75
+ (紛らわしいですねw)