From 2f613d7c9f5c5da11bd8b3a171894eb99061729c Mon Sep 17 00:00:00 2001 From: jonkerw85 <54948500+jonkerw85@users.noreply.github.com> Date: Mon, 13 Jan 2025 11:50:23 +0000 Subject: [PATCH] Update ODBC connection validation for PHP 8.4 compatibility --- ToolkitApi/Odbcsupp.php | 9 ++++++--- ToolkitApi/Toolkit.php | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ToolkitApi/Odbcsupp.php b/ToolkitApi/Odbcsupp.php index b761e0f..cacacdb 100644 --- a/ToolkitApi/Odbcsupp.php +++ b/ToolkitApi/Odbcsupp.php @@ -37,7 +37,8 @@ public function connect($database, $user, $password, $options = null) $conn = odbc_connect($database, $user, $password); } - if (is_resource($conn)) { + if ((version_compare(PHP_VERSION, '8.4.0', '<') && is_resource($conn)) || + (version_compare(PHP_VERSION, '8.4.0', '>=') && $conn instanceof \Odbc\Connection)) { return $conn; } } @@ -51,7 +52,8 @@ public function connect($database, $user, $password, $options = null) */ public function disconnect($conn) { - if (is_resource($conn)) { + if ((version_compare(PHP_VERSION, '8.4.0', '<') && is_resource($conn)) || + (version_compare(PHP_VERSION, '8.4.0', '>=') && $conn instanceof \Odbc\Connection)) { odbc_close($conn); } } @@ -168,7 +170,8 @@ public function executeQuery($conn, $stmt) $txt = array(); $crsr = odbc_exec($conn, $stmt); - if (is_resource($crsr)) { + if ((version_compare(PHP_VERSION, '8.4.0', '<') && is_resource($crsr)) || + (version_compare(PHP_VERSION, '8.4.0', '>=') && $crsr instanceof \Odbc\Result)) { while (odbc_fetch_row($crsr)) { $row = odbc_result($crsr, 1); diff --git a/ToolkitApi/Toolkit.php b/ToolkitApi/Toolkit.php index ed1ebe2..f96c52d 100644 --- a/ToolkitApi/Toolkit.php +++ b/ToolkitApi/Toolkit.php @@ -285,7 +285,8 @@ public function __construct($databaseNameOrResource, $userOrI5NamingFlag = '0', $this->debugLog("Created a new db connection in $durationCreate seconds."); } - if (!$conn) { + if ((version_compare(PHP_VERSION, '8.4.0', '<') && !is_resource($conn)) || + (version_compare(PHP_VERSION, '8.4.0', '>=') && !($conn instanceof \Odbc\Connection))) { // Note: SQLState 08001 (with or without SQLCODE=-30082) usually means invalid user or password. This is true for DB2 and ODBC. $sqlState = $transport->getErrorCode(); $this->error = $transport->getErrorMsg();