首页 > 解决方案 > 如何清理要插入 Carto Table 的用户输入数据?

问题描述

我有一个将用户提供的地理数据和用户输入的评论插入 Carto 表的应用程序。Carto SQL API通过参数传递一个完整的 PostgreSQL 查询来工作q如何在 javascript 中构造查询字符串以通过 POST 调用传递给 API,以便单引号不会破坏我的查询?

目前我正在做类似的事情

var sql = "SELECT insert_data('" + user_input +"');";
$.ajax({type: 'POST',
        url: 'https://' + config.cartoUsername + '.carto.com/api/v2/sql', //Sending the data to Carto
        crossDomain: true,
        data: {"q": sql},
        dataType: 'json',
        success: function(responseData, textStatus, jqXHR) {
                            console.log("Data saved");
                        },
        error: function(responseData, textStatus, errorThrown) {
                            console.log("Problem saving the data");
                        }
                    });

如果我提交类似的东西,I'm here我会收到 400 错误

{"error":["syntax error at or near \"m\""]}

因为查询看起来像:

SELECT insert_data('I'm here');

是否有方便的前端 javascript 库可以像这样清理 SQL 输入?

标签: javascriptuser-inputcartodb

解决方案


试试这种格式的user_input.

var user_input = "I am her";
console.log("SELECT insert_data(" + user_input +");");

此查询将如下所示:SELECT insert_data(I am here);


推荐阅读