我们已经在运行 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(),那么它可以正常工作。它生成正确的“更新”查询
我不明白为什么会这样?是我出了什么问题还是蛋糕里有虫子?
任何都会有很大的帮助。