From 8de6d4338d5c5e5c00b622dc80cf0e11500ac27d Mon Sep 17 00:00:00 2001 From: ucorina Date: Wed, 19 Oct 2011 10:32:04 +0000 Subject: [PATCH] Issue 524 - Query error. git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@9685 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../tags/column/UpdateColumnTag.class.php | 20 +++++++++++++++---- .../db/xml_query/mysql/MysqlUpdateTest.php | 10 ++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php b/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php index ba2d05227..610aa9036 100644 --- a/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php +++ b/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php @@ -20,10 +20,22 @@ if($column->attrs->var) $this->argument = new QueryArgument($column); else { - $default_value = new DefaultValue($this->name, $column->attrs->default); - if($default_value->isOperation()) + if(strpos($column->attrs->default, '.') !== false) + $this->default_value = "'" . $dbParser->parseColumnName($column->attrs->default) . "'"; + else { + $default_value = new DefaultValue($this->name, $column->attrs->default); + if($default_value->isOperation()) $this->argument = new QueryArgument($column, true); - else $this->default_value = $dbParser->parseColumnName($column->attrs->default); + //else $this->default_value = $dbParser->parseColumnName($column->attrs->default); + else { + $this->default_value = $default_value->toString(); + if($default_value->isString()){ + $this->default_value = '"' . $this->default_value . '"'; + } + } + + + } } } @@ -33,7 +45,7 @@ , $this->name , $this->argument->argument_name); else { - return sprintf('new UpdateExpressionWithoutArgument(\'%s\', \'%s\')' + return sprintf('new UpdateExpressionWithoutArgument(\'%s\', %s)' , $this->name , $this->default_value); } diff --git a/test-phpUnit/db/xml_query/mysql/MysqlUpdateTest.php b/test-phpUnit/db/xml_query/mysql/MysqlUpdateTest.php index 9b40b17da..db329e182 100644 --- a/test-phpUnit/db/xml_query/mysql/MysqlUpdateTest.php +++ b/test-phpUnit/db/xml_query/mysql/MysqlUpdateTest.php @@ -52,4 +52,14 @@ and `listorder` <= 12'; $this->_test($xml_file, $argsString, $expected); } + + function test_communication_setMessageReaded(){ + $xml_file = _XE_PATH_ . "modules/communication/queries/setMessageReaded.xml"; + $argsString = '$args->message_srl = 339321; $args->related_srl = 339321;'; + $expected = 'update `xe_member_message` as `member_message` + set `readed` = \'y\' + , `readed_date` = ' . date("YmdHis") . ' + where `message_srl` = 339321 or `related_srl` = 339321'; + $this->_test($xml_file, $argsString, $expected); + } } \ No newline at end of file