我有一些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有一个配置选项来允许这样做?
发布于 2015-08-31 20:35:30
这个问题既没有神奇的修复方法,也没有标志,只有艰苦的工作或肮脏的黑客。请注意,只有包含保留字符或由保留字组成的列(和表)名称才需要加引号。因此,更改字符串引号可能就足够了。在ODBC上生成这些查询的正确方法是预准备语句,其中的引号实际上是自动添加的。但是,我不确定PHP驱动程序在这种情况下从MonetDB使用时会做什么。
https://stackoverflow.com/questions/32238618
复制相似问题