summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.markdown1
-rw-r--r--idiorm.php7
-rwxr-xr-xtest/test_queries.php6
3 files changed, 13 insertions, 1 deletions
diff --git a/README.markdown b/README.markdown
index 4a361ba..119a540 100644
--- a/README.markdown
+++ b/README.markdown
@@ -46,6 +46,7 @@ Changelog
* Fix last insert ID for PostgreSQL using RETURNING - closes issues #62 and #89 [[laacz](https://github.com/laacz)]
* Add `get_last_statement()` - closes issue #84 [[tag](https://github.com/tag)]
* Fix when using `set_expr` alone it doesn't trigger query creation - closes issue #90
+* Escape quote symbols in "_quote_identifier_part" - close issue #74
#### 1.2.3 - release 2012-11-28
diff --git a/idiorm.php b/idiorm.php
index 9ca1de1..ad5d5e5 100644
--- a/idiorm.php
+++ b/idiorm.php
@@ -1143,7 +1143,12 @@
return $part;
}
$quote_character = self::$_config['identifier_quote_character'];
- return $quote_character . $part . $quote_character;
+ // double up any identifier quotes to escape them
+ return $quote_character .
+ str_replace($quote_character,
+ $quote_character . $quote_character,
+ $part
+ ) . $quote_character;
}
/**
diff --git a/test/test_queries.php b/test/test_queries.php
index d30a49f..2a55702 100755
--- a/test/test_queries.php
+++ b/test/test_queries.php
@@ -327,6 +327,12 @@
Tester::check_equal('Issue #57 - _log_query method raises a warning when query contains "?"', $expected);
$widget = ORM::for_table('widget')->find_one(1);
+ $widget->set('ad`ded', '2013-01-04');
+ $widget->save();
+ $expected = "UPDATE `widget` SET `ad``ded` = '2013-01-04' WHERE `id` = '1'";
+ Tester::check_equal('Issue #74 - escaping quote symbols in "_quote_identifier_part"', $expected);
+
+ $widget = ORM::for_table('widget')->find_one(1);
$widget->set_expr('added', 'NOW()');
$widget->save();
$expected = "UPDATE `widget` SET `added` = NOW() WHERE `id` = '1'";