MDL-40266 improve emulate_bound_params() for sqlsrv driver

Looping over large numbers of items with array_shift() is expensive.
Reverse the array and fetch items from the top of the pile.

Credit goes to Martin Langhoff for original mysqli fix.
This commit is contained in:
Petr Škoda
2013-07-01 08:53:27 +02:00
parent c982630a94
commit ba8a53a4f9
+3 -3
View File
@@ -616,8 +616,8 @@ class mssql_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;
@@ -642,7 +642,7 @@ class mssql_native_moodle_database extends moodle_database {
$return .= "N'$param'";
}
$return .= array_shift($parts);
$return .= array_pop($parts);
}
return $return;
}