From d3540cff5b7ff3c780f210d2746f9455d00f3a9e Mon Sep 17 00:00:00 2001 From: fangrenfu Date: Mon, 6 Jun 2016 15:21:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3mssql=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=92=8C=E6=9B=B4=E6=96=B0=E6=97=B6=E7=94=9F=E6=88=90=E8=AF=AD?= =?UTF-8?q?=E5=8F=A5=E7=9A=84=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 带order参数查询时,取值错误,取的$order[0]内容是第一个字母r。 生成update语句时,ORDER应该替换成空(MSSQL的update语句中不支持order) --- library/think/db/builder/Sqlsrv.php | 34 ++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/library/think/db/builder/Sqlsrv.php b/library/think/db/builder/Sqlsrv.php index ef4a2e85..40c6ef3e 100644 --- a/library/think/db/builder/Sqlsrv.php +++ b/library/think/db/builder/Sqlsrv.php @@ -28,7 +28,7 @@ class Sqlsrv extends Builder */ protected function parseOrder($order) { - return !empty($order) ? ' ORDER BY ' . $order[0] : ' ORDER BY rand()'; + return !empty($order) ? ' ORDER BY ' . $order : ' ORDER BY rand()'; } /** @@ -76,5 +76,37 @@ class Sqlsrv extends Builder } return 'WHERE ' . $limitStr; } + /** + * 生成update SQL + * @access public + * @param array $fields 数据 + * @param array $options 表达式 + * @return string + */ + public function update($data, $options) + { + $table = $this->parseTable($options['table']); + $data = $this->parseData($data, $options); + if (empty($data)) { + return ''; + } + foreach ($data as $key => $val) { + $set[] = $key . '=' . $val; + } + $sql = str_replace( + ['%TABLE%', '%SET%', '%JOIN%', '%WHERE%', '%ORDER%', '%LIMIT%', '%LOCK%', '%COMMENT%'], + [ + $this->parseTable($options['table']), + implode(',', $set), + $this->parseJoin($options['join']), + $this->parseWhere($options['where'], $options['table']), + '', + $this->parseLimit($options['limit']), + $this->parseLimit($options['lock']), + $this->parseComment($options['comment']), + ], $this->updateSql); + + return $sql; + } }