我正在使用 javascript/jquery 生成一个 sql 查询。我有一个在 javascript/jquery 脚本中生成和使用的 sql 查询。
像这样的东西:
var storeName;
var query = "SELECT * FROM stores where storeName = '" + storeName + "';";
(storeName
当用户从 html 中选择时通过 jquery 生成)
所以什么时候 storeName
像“杰克逊熟食店”这样的查询运行得很好。
但是什么时候storeName
是“杰克逊熟食店”它不起作用,这似乎是因为杰克逊的撇号被视为结束语。我知道如果我对查询进行硬编码,我可以通过加倍来逃避引用......所以
SELECT * FROM stores where storeName = 'Jackson''s Deli';
应该管用。但我没有对查询进行硬编码。相反,它是由用户输入生成的,名称中可能有也可能没有撇号。在这种情况下,我将如何逃避'
这个角色?我需要它在 Javascript/jquery 中工作。
我是否需要编写一个 if 语句来查找'
instoreName
并将其替换为''
?? 或者还有其他方法可以解决这个问题吗?
编辑:哎哟!通常,是的,我意识到在客户端生成查询的危险。
所以这里有更多的上下文。我正在使用cartodb并遵循他们的文档。这是他们的回购中的一个示例,它与我正在谈论的类似(他们也有其他示例):
https://github.com/CartoDB/cartodb.js/blob/develop/examples/layer_selector.html
您不能在 cartodb 中运行允许您以任何方式修改数据的查询——您只能运行允许您检索数据的查询。所以我仍在考虑逃避这个引号字符的最佳方法是什么。