From 4f3e38e745c389af48525f6355a19359a374e987 Mon Sep 17 00:00:00 2001 From: Martin Langhoff Date: Tue, 11 Jun 2013 20:56:39 -0400 Subject: [PATCH] MDL-40266 improve emulate_bound_params() for mysqli Looping over large numbers of items with array_shift() is expensive. Reverse the array and fetch items from the top of the pile. --- lib/dml/mysqli_native_moodle_database.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/dml/mysqli_native_moodle_database.php b/lib/dml/mysqli_native_moodle_database.php index e819824c4eb..9d068095baf 100644 --- a/lib/dml/mysqli_native_moodle_database.php +++ b/lib/dml/mysqli_native_moodle_database.php @@ -853,8 +853,8 @@ class mysqli_native_moodle_database extends moodle_database { return $sql; } // ok, we have verified sql statement with ? and correct number of params - $parts = explode('?', $sql); - $return = array_shift($parts); + $parts = array_reverse(explode('?', $sql)); + $return = array_pop($parts); foreach ($params as $param) { if (is_bool($param)) { $return .= (int)$param; @@ -868,7 +868,7 @@ class mysqli_native_moodle_database extends moodle_database { $param = $this->mysqli->real_escape_string($param); $return .= "'$param'"; } - $return .= array_shift($parts); + $return .= array_pop($parts); } return $return; } -- 2.43.0