summaryrefslogtreecommitdiff
path: root/idiorm.php
diff options
context:
space:
mode:
authorSimon Holywell <[email protected]>2014-06-27 13:47:35 +0100
committerSimon Holywell <[email protected]>2014-06-27 13:47:35 +0100
commitad5d6b1100307d7fb6cb94c9944918dfe3977718 (patch)
tree1b1d35ceaefaf901d2eedffc424e2f98eebbed06 /idiorm.php
parenta7f20ee1b89123b68d47e9d17e9964c495c183d2 (diff)
parentb65268cea3ecd96f278e51a2936d0d7ab0286c18 (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.php38
1 files changed, 21 insertions, 17 deletions
diff --git a/idiorm.php b/idiorm.php
index b3f3fb7..0e305fd 100644
--- a/idiorm.php
+++ b/idiorm.php
@@ -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;