From c600ccad5c6064c3e97814adcf05f10a1fb29623 Mon Sep 17 00:00:00 2001 From: miqrogroove Date: Thu, 21 Jun 2018 17:27:12 -0400 Subject: [PATCH] Correct dba::close() To Match dba::p() --- include/dba.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/include/dba.php b/include/dba.php index 478a1a10c2..5c9b724340 100644 --- a/include/dba.php +++ b/include/dba.php @@ -349,7 +349,7 @@ class dba { * For all regular queries please use dba::select or dba::exists * * @param string $sql SQL statement - * @return bool|object statement object + * @return bool|object statement object or result object */ public static function p($sql) { $a = get_app(); @@ -1404,8 +1404,18 @@ class dba { $ret = $stmt->closeCursor(); break; case 'mysqli': - $stmt->free_result(); - $ret = $stmt->close(); + // MySQLi offers both a mysqli_stmt and a mysqli_result class. + // We should be careful not to assume the object type of $stmt + // because dba::p() has been able to return both types. + if ($stmt instanceof mysqli_stmt) { + $stmt->free_result(); + $ret = $stmt->close(); + } elseif ($stmt instanceof mysqli_result) { + $stmt->free(); + $ret = true; + } else { + $ret = false; + } break; }