@@ -118,10 +118,42 @@ public function __construct($params)
118118 * Database connection
119119 *
120120 * @param bool $persistent
121- * @return object
121+ * @return mixed
122122 */
123123 public function db_connect ($ persistent = false )
124124 {
125+
126+ if (PHP_VERSION_ID >= 80400 && class_exists ('\Pdo\Mysql ' )) {
127+ $ CONST_PREFIX = \Pdo \Mysql::class . ':: ' ;
128+ $ ATTR_INIT_COMMAND_NAME = $ CONST_PREFIX . 'ATTR_INIT_COMMAND ' ;
129+ $ ATTR_COMPRESS_NAME = $ CONST_PREFIX . 'ATTR_COMPRESS ' ;
130+ $ ATTR_SSL_KEY_NAME = $ CONST_PREFIX . 'ATTR_SSL_KEY ' ;
131+ $ ATTR_SSL_CERT_NAME = $ CONST_PREFIX . 'ATTR_SSL_CERT ' ;
132+ $ ATTR_SSL_CA_NAME = $ CONST_PREFIX . 'ATTR_SSL_CA ' ;
133+ $ ATTR_SSL_CAPATH_NAME = $ CONST_PREFIX . 'ATTR_SSL_CAPATH ' ;
134+ $ ATTR_SSL_CIPHER_NAME = $ CONST_PREFIX . 'ATTR_SSL_CIPHER ' ;
135+ $ ATTR_SSL_VERIFY_SERVER_CERT_NAME = $ CONST_PREFIX . 'ATTR_SSL_VERIFY_SERVER_CERT ' ;
136+ } else {
137+ $ CONST_PREFIX = \PDO ::class . ':: ' ;
138+ $ ATTR_INIT_COMMAND_NAME = $ CONST_PREFIX . 'MYSQL_ATTR_INIT_COMMAND ' ;
139+ $ ATTR_COMPRESS_NAME = $ CONST_PREFIX . 'MYSQL_ATTR_COMPRESS ' ;
140+ $ ATTR_SSL_KEY_NAME = $ CONST_PREFIX . 'MYSQL_ATTR_SSL_KEY ' ;
141+ $ ATTR_SSL_CERT_NAME = $ CONST_PREFIX . 'MYSQL_ATTR_SSL_CERT ' ;
142+ $ ATTR_SSL_CA_NAME = $ CONST_PREFIX . 'MYSQL_ATTR_SSL_CA ' ;
143+ $ ATTR_SSL_CAPATH_NAME = $ CONST_PREFIX . 'MYSQL_ATTR_SSL_CAPATH ' ;
144+ $ ATTR_SSL_CIPHER_NAME = $ CONST_PREFIX . 'MYSQL_ATTR_SSL_CIPHER ' ;
145+ $ ATTR_SSL_VERIFY_SERVER_CERT_NAME = $ CONST_PREFIX . 'MYSQL_ATTR_SSL_VERIFY_SERVER_CERT ' ;
146+ }
147+
148+ $ ATTR_INIT_COMMAND = constant ($ ATTR_INIT_COMMAND_NAME );
149+ $ ATTR_COMPRESS = constant ($ ATTR_COMPRESS_NAME );
150+ $ ATTR_SSL_KEY = constant ($ ATTR_SSL_KEY_NAME );
151+ $ ATTR_SSL_CERT = constant ($ ATTR_SSL_CERT_NAME );
152+ $ ATTR_SSL_CA = constant ($ ATTR_SSL_CA_NAME );
153+ $ ATTR_SSL_CAPATH = constant ($ ATTR_SSL_CAPATH_NAME );
154+ $ ATTR_SSL_CIPHER = constant ($ ATTR_SSL_CIPHER_NAME );
155+ $ ATTR_SSL_VERIFY_SERVER_CERT = constant ($ ATTR_SSL_VERIFY_SERVER_CERT_NAME ) ?? -1 ;
156+
125157 if (isset ($ this ->stricton )) {
126158 if ($ this ->stricton ) {
127159 $ sql = 'CONCAT(@@sql_mode, ",", "STRICT_ALL_TABLES") ' ;
@@ -137,28 +169,30 @@ public function db_connect($persistent = false)
137169 }
138170
139171 if (! empty ($ sql )) {
140- if (empty ($ this ->options [PDO :: MYSQL_ATTR_INIT_COMMAND ])) {
141- $ this ->options [PDO :: MYSQL_ATTR_INIT_COMMAND ] = 'SET SESSION sql_mode = ' . $ sql ;
172+ if (empty ($ this ->options [$ ATTR_INIT_COMMAND ])) {
173+ $ this ->options [$ ATTR_INIT_COMMAND ] = 'SET SESSION sql_mode = ' . $ sql ;
142174 } else {
143- $ this ->options [PDO :: MYSQL_ATTR_INIT_COMMAND ] .= ', @@session.sql_mode = ' . $ sql ;
175+ $ this ->options [$ ATTR_INIT_COMMAND ] .= ', @@session.sql_mode = ' . $ sql ;
144176 }
145177 }
146178 }
147179
180+
148181 if ($ this ->compress === true ) {
149- $ this ->options [PDO :: MYSQL_ATTR_COMPRESS ] = true ;
182+ $ this ->options [$ ATTR_COMPRESS ] = true ;
150183 }
151184
152185 if (is_array ($ this ->encrypt )) {
153- $ ssl = [];
154- empty ($ this ->encrypt ['ssl_key ' ]) or $ ssl [PDO ::MYSQL_ATTR_SSL_KEY ] = $ this ->encrypt ['ssl_key ' ];
155- empty ($ this ->encrypt ['ssl_cert ' ]) or $ ssl [PDO ::MYSQL_ATTR_SSL_CERT ] = $ this ->encrypt ['ssl_cert ' ];
156- empty ($ this ->encrypt ['ssl_ca ' ]) or $ ssl [PDO ::MYSQL_ATTR_SSL_CA ] = $ this ->encrypt ['ssl_ca ' ];
157- empty ($ this ->encrypt ['ssl_capath ' ]) or $ ssl [PDO ::MYSQL_ATTR_SSL_CAPATH ] = $ this ->encrypt ['ssl_capath ' ];
158- empty ($ this ->encrypt ['ssl_cipher ' ]) or $ ssl [PDO ::MYSQL_ATTR_SSL_CIPHER ] = $ this ->encrypt ['ssl_cipher ' ];
159-
160- if (defined ('PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT ' ) && isset ($ this ->encrypt ['ssl_verify ' ])) {
161- $ ssl [PDO ::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT ] = $ this ->encrypt ['ssl_verify ' ];
186+ $ ssl = array ();
187+ empty ($ this ->encrypt ['ssl_key ' ]) or $ ssl [$ ATTR_SSL_KEY ] = $ this ->encrypt ['ssl_key ' ];
188+ empty ($ this ->encrypt ['ssl_cert ' ]) or $ ssl [$ ATTR_SSL_CERT ] = $ this ->encrypt ['ssl_cert ' ];
189+ empty ($ this ->encrypt ['ssl_ca ' ]) or $ ssl [$ ATTR_SSL_CA ] = $ this ->encrypt ['ssl_ca ' ];
190+ empty ($ this ->encrypt ['ssl_capath ' ]) or $ ssl [$ ATTR_SSL_CAPATH ] = $ this ->encrypt ['ssl_capath ' ];
191+ empty ($ this ->encrypt ['ssl_cipher ' ]) or $ ssl [$ ATTR_SSL_CIPHER ] = $ this ->encrypt ['ssl_cipher ' ];
192+
193+
194+ if ($ ATTR_SSL_VERIFY_SERVER_CERT !== -1 && isset ($ this ->encrypt ['ssl_verify ' ])) {
195+ $ ssl [$ ATTR_SSL_VERIFY_SERVER_CERT ] = $ this ->encrypt ['ssl_verify ' ];
162196 }
163197
164198 // DO NOT use array_merge() here!
@@ -293,7 +327,7 @@ protected function _list_columns($table = '')
293327 * Returns an object with field data
294328 *
295329 * @param string $table
296- * @return array
330+ * @return array|bool
297331 */
298332 public function field_data ($ table )
299333 {
0 commit comments