diff options
author | Simon Holywell <[email protected]> | 2014-06-27 13:47:35 +0100 |
---|---|---|
committer | Simon Holywell <[email protected]> | 2014-06-27 13:47:35 +0100 |
commit | ad5d6b1100307d7fb6cb94c9944918dfe3977718 (patch) | |
tree | 1b1d35ceaefaf901d2eedffc424e2f98eebbed06 /idiorm.php | |
parent | a7f20ee1b89123b68d47e9d17e9964c495c183d2 (diff) | |
parent | b65268cea3ecd96f278e51a2936d0d7ab0286c18 (diff) |
Merge pull request #223 from m92o/named-placeholders-logging
Support named placeholders logging and test
Diffstat (limited to 'idiorm.php')
-rw-r--r-- | idiorm.php | 38 |
1 files changed, 21 insertions, 17 deletions
@@ -456,29 +456,33 @@ self::$_query_log[$connection_name] = array(); } - // Strip out any non-integer indexes from the parameters - foreach($parameters as $key => $value) { - if (!is_int($key)) unset($parameters[$key]); - } - - if (count($parameters) > 0) { + if (empty($parameters)) { + $bound_query = $query; + } else { // Escape the parameters $parameters = array_map(array(self::get_db($connection_name), 'quote'), $parameters); - // Avoid %format collision for vsprintf - $query = str_replace("%", "%%", $query); + if (array_values($parameters) === $parameters) { + // ? placeholders + // Avoid %format collision for vsprintf + $query = str_replace("%", "%%", $query); - // Replace placeholders in the query for vsprintf - if(false !== strpos($query, "'") || false !== strpos($query, '"')) { - $query = IdiormString::str_replace_outside_quotes("?", "%s", $query); + // Replace placeholders in the query for vsprintf + if(false !== strpos($query, "'") || false !== strpos($query, '"')) { + $query = IdiormString::str_replace_outside_quotes("?", "%s", $query); + } else { + $query = str_replace("?", "%s", $query); + } + + // Replace the question marks in the query with the parameters + $bound_query = vsprintf($query, $parameters); } else { - $query = str_replace("?", "%s", $query); + // named placeholders + foreach ($parameters as $key => $val) { + $query = str_replace($key, $val, $query); + } + $bound_query = $query; } - - // Replace the question marks in the query with the parameters - $bound_query = vsprintf($query, $parameters); - } else { - $bound_query = $query; } self::$_last_query = $bound_query; |