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

回答編集履歴

2

回答を修正

2016/10/27 14:22

投稿

KiyoshiMotoki
KiyoshiMotoki

スコア4791

answer CHANGED
@@ -35,4 +35,18 @@
35
35
 
36
36
  どういうわけか、DSN文字列にPDOまたはMySQLが解釈できないオプションが含まれている場合にも
37
37
  `SQLSTATE[3D000]`というエラーが返されるようです。
38
- (紛らわしいですねw)
38
+ (紛らわしいですねw)
39
+
40
+ # 追記
41
+
42
+ > どういうわけか、DSN文字列にPDOまたはMySQLが解釈できないオプションが含まれている場合にも
43
+ SQLSTATE[3D000]というエラーが返されるようです。
44
+
45
+ について追って確認してみたところ、正しくは
46
+ ```
47
+ DSN文字列にPDOまたはMySQLが解釈できない文字列が含まれている場合、【それ以降のオプションが無視される】。
48
+ ```
49
+ という動作になるようです。
50
+
51
+ `port:3307`のように、解釈不可能な文字列をDSNの先頭や末尾など、様々な位置に挿入してみると、
52
+ 挿入した位置によってエラーの内容が変わることが確認できました。

1

回答を修正

2016/10/27 14:22

投稿

KiyoshiMotoki
KiyoshiMotoki

スコア4791

answer CHANGED
@@ -9,4 +9,30 @@
9
9
 
10
10
  などです。
11
11
 
12
- そのようなことがないか、もう一度確認してみてください。
12
+ そのようなことがないか、もう一度確認してみてください。
13
+
14
+ # 修正
15
+
16
+ データベース名ではなく、ホスト名(と、ポート番号)の指定に誤りがありました。
17
+
18
+ check.php の変数`$SERV`を、以下のように修正してみてください。
19
+ ##### Before
20
+ ```php
21
+ $SERV="127.0.0.1;port:3307";
22
+ ```
23
+
24
+ ##### After
25
+ ```php
26
+ $SERV="127.0.0.1:3307";
27
+ ```
28
+ または
29
+ ```php
30
+ $SERV="127.0.0.1;port=3307";
31
+ ```
32
+ [http://php.net/manual/ja/ref.pdo-mysql.connection.php](http://php.net/manual/ja/ref.pdo-mysql.connection.php)
33
+ > より完全な例は、このようになります。
34
+ mysql:host=localhost;port=3307;dbname=testdb
35
+
36
+ どういうわけか、DSN文字列にPDOまたはMySQLが解釈できないオプションが含まれている場合にも
37
+ `SQLSTATE[3D000]`というエラーが返されるようです。
38
+ (紛らわしいですねw)