- 使用参数来转义数据
使用参数来转义数据
我们使用了where("user.name = :name", { name: "Timber" })
.{name:“Timber”}
代表什么? 这是我们用来阻止 SQL 注入的参数。我们可以写:where("user.name ='"+ name +"')
,但是这不安全,因为有可能被 SQL 注入。安全的方法是使用这种特殊的语法:where("user.name =name",{name:"Timber"})
,其中name
是参数名,值在对象中指定: {name:"Timber"}
。
.where("user.name = :name", { name: "Timber" })
是下面的简写:
.where("user.name = :name")
.setParameter("name", "Timber")
注意:不要在查询构建器中为不同的值使用相同的参数名称。如果多次设置则后值将会把前面的覆盖。
还可以提供一组值,并使用特殊的扩展语法将它们转换为SQL语句中的值列表:
.where("user.name IN (:...names)", { names: [ "Timber", "Cristal", "Lina" ] })
该语句将生成:
WHERE user.name IN ('Timber', 'Cristal', 'Lina')