@@ -37,6 +37,34 @@ function getRequiredEnv(string $name): string
37
37
return $ value ;
38
38
}
39
39
40
+ function getPdoEmulatePreparesEnv () : bool
41
+ {
42
+ $ emulatePrepares = getOptionalEnv ('PDO_EMULATE_PREPARES ' ) ?? 'OFF ' ;
43
+
44
+ echo 'with emulate prepares: ' , $ emulatePrepares , PHP_EOL ;
45
+
46
+ return match ($ emulatePrepares ) {
47
+ 'ON ' => true ,
48
+ 'OFF ' => false ,
49
+ };
50
+ }
51
+
52
+ /**
53
+ * @return PDO::ERRMODE_*
54
+ */
55
+ function getPdoErrmodeEnv () : int
56
+ {
57
+ $ errmode = getOptionalEnv ('PDO_ERRMODE ' ) ?? 'EXCEPTION ' ;
58
+
59
+ echo 'with errmode: ' , $ errmode , PHP_EOL ;
60
+
61
+ return match ($ errmode ) {
62
+ 'SILENT ' => PDO ::ERRMODE_SILENT ,
63
+ 'WARNING ' => PDO ::ERRMODE_WARNING ,
64
+ 'EXCEPTION ' => PDO ::ERRMODE_EXCEPTION ,
65
+ };
66
+ }
67
+
40
68
(function () {
41
69
require 'vendor/autoload.php ' ;
42
70
@@ -68,10 +96,10 @@ function getRequiredEnv(string $name): string
68
96
break ;
69
97
70
98
case 'mysql_pdo ' :
71
- $ emulatePrepares = getOptionalEnv ('EMULATE_PREPARES ' ) === 'ON ' ;
72
-
73
99
echo 'Using MysqlEngine with PdoMysqlDriver ' , PHP_EOL ;
74
- echo 'with emulated prepares ' , ($ emulatePrepares ? 'ON ' : 'OFF ' ), PHP_EOL ;
100
+
101
+ $ emulatePrepares = getPdoEmulatePreparesEnv ();
102
+ $ errmode = getPdoErrmodeEnv ();
75
103
76
104
$ host = getRequiredEnv ('MYSQL_HOST ' );
77
105
$ port = getOptionalEnvOrDefault ('MYSQL_PORT ' , '3306 ' );
@@ -80,7 +108,7 @@ function getRequiredEnv(string $name): string
80
108
81
109
$ dsn = sprintf ('mysql:host=%s;port=%d ' , $ host , $ port );
82
110
$ pdo = new PDO ($ dsn , $ username , $ password , [
83
- PDO ::ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION ,
111
+ PDO ::ATTR_ERRMODE => $ errmode ,
84
112
PDO ::ATTR_EMULATE_PREPARES => $ emulatePrepares ,
85
113
]);
86
114
@@ -93,10 +121,10 @@ function getRequiredEnv(string $name): string
93
121
break ;
94
122
95
123
case 'mariadb_pdo ' :
96
- $ emulatePrepares = getOptionalEnv ('EMULATE_PREPARES ' ) === 'ON ' ;
97
-
98
124
echo 'Using MariadbEngine with PdoMysqlDriver ' , PHP_EOL ;
99
- echo 'with emulated prepares ' , ($ emulatePrepares ? 'ON ' : 'OFF ' ), PHP_EOL ;
125
+
126
+ $ emulatePrepares = getPdoEmulatePreparesEnv ();
127
+ $ errmode = getPdoErrmodeEnv ();
100
128
101
129
$ host = getRequiredEnv ('MARIADB_HOST ' );
102
130
$ port = getOptionalEnvOrDefault ('MARIADB_PORT ' , '3306 ' );
@@ -105,7 +133,7 @@ function getRequiredEnv(string $name): string
105
133
106
134
$ dsn = sprintf ('mysql:host=%s;port=%d ' , $ host , $ port );
107
135
$ pdo = new PDO ($ dsn , $ username , $ password , [
108
- PDO ::ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION ,
136
+ PDO ::ATTR_ERRMODE => $ errmode ,
109
137
PDO ::ATTR_EMULATE_PREPARES => $ emulatePrepares ,
110
138
]);
111
139
@@ -118,10 +146,10 @@ function getRequiredEnv(string $name): string
118
146
break ;
119
147
120
148
case 'postgis_pdo ' :
121
- $ emulatePrepares = getOptionalEnv ('EMULATE_PREPARES ' ) === 'ON ' ;
122
-
123
149
echo 'Using PostgisEngine with PdoPgsqlDriver ' , PHP_EOL ;
124
- echo 'with emulated prepares ' , ($ emulatePrepares ? 'ON ' : 'OFF ' ), PHP_EOL ;
150
+
151
+ $ emulatePrepares = getPdoEmulatePreparesEnv ();
152
+ $ errmode = getPdoErrmodeEnv ();
125
153
126
154
$ host = getRequiredEnv ('POSTGRES_HOST ' );
127
155
$ port = getOptionalEnvOrDefault ('POSTGRES_PORT ' , '5432 ' );
@@ -133,7 +161,7 @@ function getRequiredEnv(string $name): string
133
161
$ username ,
134
162
$ password ,
135
163
[
136
- PDO ::ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION ,
164
+ PDO ::ATTR_ERRMODE => $ errmode ,
137
165
PDO ::ATTR_EMULATE_PREPARES => $ emulatePrepares ,
138
166
],
139
167
);
0 commit comments