如何安全地使用保留的SQL名称?

xte*_*oid 0 sql-server cakephp query-builder cakephp-bake cakephp-3.0

我正在使用Cakephp 3使用sqlserver作为数据源服务器.我确信我的数据库连接没有问题..因为home.ctp提示我已连接到我的数据库..我也可以使用迁移插件来创建我的表..似乎没有问题使用这些工具.但是在我烘焙MVC之后,我只有错误的页面.

例如$ bin\cake烘焙所有测试

我发现没有错误,MVC在其特定文件夹,testController.php,testTable等中.

并在浏览器localhost:8765\tests

但我得到的只是不同错误的页面..我看到了

Error: SQLSTATE[42000]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near the keyword 'desc'.

SELECT * FROM (SELECT Tests.id AS [Tests__id], Tests.desc AS [Tests__desc], (ROW_NUMBER() OVER (ORDER BY (SELECT NULL))) AS [_cake_page_rownum_] FROM tests Tests) _cake_paging_ WHERE _cake_paging_._cake_page_rownum_ <= :c0

左侧有更多错误.

我认为这是因为带有错误查询的控制器或bake生成的查询仅适用于mysql.我只是想知道如何处理这件事.有没有我忘了做的设置?请指教.我是Cakephp的新手,英语不是我的母语,如果我无法正确解释我的问题,对不起.提前致谢.

ndm*_*ndm 9

正如Vishal Gajjar在评论中已经提到的那样,你正在使用保留关键字desc作为列名,因此错误,它不是故障,它是你的.

为了能够使用这样的保留字,需要正确引用列名,但CakePHP 3不再默认自动引用,因为这是一项昂贵的操作.

如果您坚持使用保留字,请通过配置中的quoteIdentifiers选项启用标识符引用app.php,或使用DB驱动程序的autoQuoting()(enableAutoQuoting()从CakePHP 3.4开始)方法手动启用它.

也可以看看