我正在尝试将我的网站移动到Azure,以便在我使用Apache / MySql之前依赖他们的SQL服务器。
我在尝试转换查询时遇到了一些困难,因为它们不再起作用了。
如果我连接到MySql数据库,以下情况有效,但如果我更改了与Azure SQL的连接,则会失败。
string(178)“SELECT * FROM schemedb.users WHERE CreatedBy = 20 ORDER BY dateCreation Desc”string(177)“SELECT IdUsr FROM schemedb.userssettings WHERE User = 20 ORDER BY Id Desc”
与Azure SQL服务器的所有连接都是正确的,作为一个更简单的查询,然后才能正常执行。但后来我被困在这里。
php错误控制台说
致命错误:在...中的非对象上调用成员函数setFetchMode()
要了解问题所在,我在查询中使用var_dump,看看它们失败的地方,如果我将它们更改为:
string(178)“SELECT * FROM schemedb.users ORDER BY dateCreation Desc”string(177)“SELECT IdUsr from schemedb.userssettings Order By Id Desc”
这些查询是有效的,所以我猜问题就是where
子句,但我不知道问题是什么。
- 编辑
我做了一些测试,结果发现,如果我手动编写查询,它会按预期工作。
我的意思是上面提到的查询是通过几个php自定义方法构建的,如下所示:
。“WHERE”。$ this-> buildWhere()。“ORDER BY”。等
但如果我在那里输入WHERE CreatedBy = 20
,那么它就可以了。
我最好的猜测是格式问题,因为在SQL Azure中,查询中的数据类型必须与列中声明的类型相同。
然而,我无法理解什么是错的,因为我的自定义方法正在写值vithout '
,因此作为数字,而不是字符串......