0

我们已经在运行 MYSQL 的 CakePHP 中开发了我们的应用程序,并且运行良好。PHP 版本是 5.4.16,Apache 2.4.4,最新的 XAMP。CakePHP 版本:2.3.0

我们在 MSSQL 中也已经有了类似的数据库。现在我们也想用这个 MSSQL 运行我们的应用程序。

为此,我们将 php_pdo_sqlsrv_54_ts.dll 和 php_sqlsrv_54_ts.dll 用于 MSSQL 驱动程序。它的sql server 2005。

每当我们更新表中的值时,我们都会使用 Model.Php 的 UpdateAll(),它会进一步调用相应数据源的 update()。我们的代码是这样的。

if ($this->Configurationtable->updateAll(array('Configurationtable.configuration_optionsetting' => $limit ),
array('Configurationtable.configuration_optionname =' => $optionName))) { 
     $this->Session->setFlash('The Result Limit has been updated'); 
     $this->redirect(array('action' => 'edit')); 
} else
{ 
     $this->Session->setFlash('The configuration could not be saved. Please, try again.'); 
}

现在这在 MySql 中工作正常并生成以下更新查询

UPDATE ipa.configurationtable AS Configurationtable SET Configurationtable.configuration_optionsetting = 12 WHERE Configurationtable.configuration_optionname = 'searchPaginationLimit'

但在 MS Sql Server 中,它失败并生成完全错误的查询,即

 SELECT [Configurationtable].[id] AS [Configurationtable__id] FROM [configurationtable] AS [Configurationtable] WHERE [Configurationtable].[configuration_optionname] = N'searchPaginationLimit'

现在,如果我在 \lib\Cake\Model\Datasource\Database\Sqlserver.php 中创建 Update() 函数,类似于 \lib\Cake\Model\Datasource\Database\Mysql.php 中的 Update(),那么它可以正常工作。它生成正确的“更新”查询

我不明白为什么会这样?是我出了什么问题还是蛋糕里有虫子?

任何都会有很大的帮助。

4

1 回答 1

0

我会提交一个错误,但首先要确保升级到最新版本不能解决您的问题。另请参阅Sqlserver.php 的提交日志

于 2013-07-29T12:37:21.373 回答