我有一个正在从MySql移动到Sql Server的CakePHP应用程序。有一个查询似乎并不正确传输:CakePHP - 生成的查询与SQL Server无法正常工作
$this->Model->find('all', array(
'conditions' => array(
'Model.column' => array(1, 2, 3)
)
)
);
当我使用这个语法与MySQL,它似乎“解包”的阵列 正确,并且生成的查询是一样的东西
“ ... WHERE 'Model.column' IN(1,2,3)... “
当我使用SQL Server,生成的查询是
” ... WHERE 'Model.column' IN '阵列'“...
这显然会产生一个错误。我昨天在CakePHP Google Group上发布了这个问题,但还没有收到回复,所以我想我会试试。如果任何人有任何想法/建议,我将不胜感激。
只是增加:这是正确的,因为''Array''似乎是一个自动数组字符串由PHP完成。它*应该*抛出一个通知,如果这样做。 *应该*帮助找到*演员正在完成的地方。 – deceze 2010-03-10 23:22:59
对不起,我不清楚,但没有两个安装的蛋糕。我的应用程序是使用MySQL作为数据库开发的,但现在管理员希望它使用SQL Server,所以我试图调试生成的查询中的任何不一致。我在Linux机器上使用1.2.6。我没有在cake/libs/model/datasources/dbo/dbo_mssql.php中看到任何会覆盖默认行为的东西,所以我将尝试查找更多关于正在执行的演员的信息。 – 2010-03-12 15:50:34
只需检查一下,看看你是否取得了进展。我猜这是甚至相同的机器,所以PHP版本将是相同的。 PHP和调试器可能会很痛苦。跟踪代码的简单方法是编辑dbo_mssql。PHP和发现: function _execute($ sql){ return mssql_query($ sql,$ this-> connection); } 并将其更改为: 函数_execute($ sql){ $ this-> log(debug_backtrace()); return mssql_query($ sql,$ this-> connection); } 它会在您的日志中转储大量数据,但您会得到很多状态信息。 – 2010-03-24 16:19:04