【问题标题】:Support of Escaping query identifiers支持转义查询标识符
【发布时间】:2013-12-17 11:55:52
【问题描述】:

我在我的节点项目中使用 Sequelize 2.0.0,我的方言是 mysql。目前,我更喜欢使用原始 SQL 查询而不是使用 Sequelize ORM 方法。

我在 Sequelize 中找不到任何关于“如何在我的 SQL 查询中使用转义查询标识符”的示例或文档。

在执行插入或更新操作时,我想在某些情况下转义引号。

我想要一些支持,就像我在 node-mysql 中找到的那样 https://github.com/felixge/node-mysql#escaping-query-identifiers

您能否提供一些简短的 SQL 查询(插入或更新) 我想,http://sequelizejs.com/docs/latest/usage#raw-queries 提供的替换文档是我不想要的不同的东西。或者我可能是错的。我想知道更换能解决我的逃生问题吗?

谢谢

【问题讨论】:

    标签: mysql escaping sequelize.js tablename


    【解决方案1】:

    mysql_real_escape_string 是 PHP 函数,不能与 JS 库一起使用。

    Sequelize 是一个 ORM,它将 SQL 抽象出来(而且,查看文档,我看不到使用它注入原始 SQL 的 API)。在将字符串插入 SQL 之前,您不需要手动转义字符串,因为您不是自己编写 SQL。


    我有found the documentation for raw queries

    您可以在文档中看到它使用参数化查询:

    sequelize.query('SELECT * FROM projects WHERE status = :status ', null, {raw: true}, { status: 'active' }).success(function(projects) {
      console.log(projects)
    })
    

    这些是 SQL 转义文本的首选方法(also true in PHP)。

    【讨论】:

    • Sequelize 支持原始 SQL 查询。出于某种原因,我不想使用 ORM 短裤方法,在这种情况下,我将自己编写 SQL。
    • 另见我在 URL github.com/sequelize/sequelize/issues/1132 下登录的一些 cmets
    【解决方案2】:

    在 Sequelize 中查找有关“如何在我的 SQL 查询中使用转义查询标识符”的任何文档是没有意义的。因为 Sequelize 和 Mysql identifiers. 完全没有关系

    因此,要格式化标识符,您必须将 in 括在反引号和双反引号内。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2021-11-08
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2020-12-11
      • 2020-10-03
      相关资源
      最近更新 更多