我正在将一个现有的项目从MySQL转换到Postgres。在使用?作为占位符的代码中,有相当多的原始SQL文本,例如 id users name = ?转换成$1这样的postgres风格的运算符。
有没有办法让node-postgres接受问号,或者是一个可以转换为postgres样式参数的实用工具?请注意,某种基于正则表达式的黑客攻击是不可接受的,因为问号可以包含在引号内,也可以将反斜杠转义到任何深度。
给定带有占位符的SQL-query: SELECT * FROM table WHERE `a`=? AND `b`=? 和查询参数'aaa','bbb',我想用相应的参数替换?-占位符。#'), $params, $sql, 1); (在这个问题中,我们不关注mysql--转义、引用等)。aa",第二遍将这个(刚插入的)问号更改为"bbb“。 问题是:我如何绕过这种令人困惑的preg_replace行为?
我在使用节点mysql2模块执行更新查询时遇到了一些小问题。我正在使用'?‘来准备查询。占位符,然后传入类似这样的值; [...]由于某些原因,代码似乎没有选择第二个问号占位符,因此它没有传递正确的值(即它试图找到userid of ?)。我的run_db_insert函数如下;
function run_db_insert(sql, args, callback){