我有一些PHP代码,我正在尝试从MySQL移植到MonetDB。代码使用ODBC,因此理论上它应该只是更改驱动程序的情况。
以下是PHP生成并发送到数据库的SQL示例:
SELECT mycolumn FROM foo WHERE bar="123";
不幸的是,MonetDB对MySQL使用不同的引用约定:列名需要用双引号括起来,单引号中的值。所以它会期望:
SELECT "mycolumn" FROM foo WHERE bar='123';
有没有简单的方法来解决这个问题,而不是通过成千上万的PHP代码修复这一切? ODBC可以神奇地修复引用,或者MonetDB有一个配置选项允许它吗?
答案 0 :(得分:0)
这个问题没有神奇的修复或标志,只是努力工作或肮脏的黑客。请注意,如果列(和表)名称包含保留字符或由保留字组成,则只需要引用它们。因此,更改字符串引号可能就足够了。在ODBC上生成这些查询的正确方法是准备语句,其中引号确实是自动添加的。但是,在使用PHP时,我不确定MonetDB ODBC驱动程序在这种情况下会做什么。