【问题标题】:NodeJS and MariaDB, Placeholder inside QueriesNodeJS 和 MariaDB,查询中的占位符
【发布时间】:2018-11-15 01:54:13
【问题描述】:

我对 Mariadb 很陌生。 我想执行一个插入语句,其中包含值的占位符,但也适用于列。我试过了?和??对于列但仍然出现错误,该 sql 语法错误:

let query = "INSERT INTO Users(??, ??, ??, ??, ??) VALUES(?,?,?,?,?);"
let data = [ 'email','forename', 'location','longitude','latitude', 
         ,'test','test','test',1,1 ]
conn.query(query, data)

这里有什么问题?

谢谢

【问题讨论】:

    标签: sql node.js mariadb placeholder


    【解决方案1】:

    与 mysql 连接器相比,唯一不受支持的是那些 "Escaping query identifiers"

    原因是:

    • 首先,我没有看到它的用例。有没有!?
    • 我希望使用标准的 MariaDB SQL 语法,仅使用 ? 作为占位符。

    只有? 作为占位符的原因是,当连接器将使用二进制协议(尚未实现)时,连接器将不必解析 SQL 命令,然后执行得更好。

    但你可以将命令改写为:

    let query = "INSERT INTO Users(`email`,`forename, `location`,`longitude`,`latitude`) VALUES(?,?,?,?,?);"
    let data = ['test','test','test',1,1]
    conn.query(query, data)
    

    如果您看到一些用例。随时在github 上创建问题

    【讨论】:

    • 我有很多带有可选字段的不同表格。我的想法是我没有为每个可能的选项构建查询。为了防止 SQL 注入,我想计算有多少列希望用户更新,然后首先使用占位符构建查询
    • 你能在github.com/MariaDB/mariadb-connector-nodejs上创建一个问题然后讨论这个吗?
    • 当然有它的用例!我自己现在有一个直截了当的。用于更新设置的端点;它需要一个设置 ID 和一个值。 ID是映射的,或者是表中字段的直接名称,值就是值。当然还有很多其他有效的场景,如果有这种支持,代码会变得更加优雅。
    猜你喜欢
    • 2021-11-07
    • 2019-04-19
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    相关资源
    最近更新 更多