我正在try 使用node.js和MySQL执行带有占位符的查询.但LIMIT占位符似乎不起作用,因为它后面的值应该不带引号.以下是我的疑问:

SELECT userName, clicks FROM users ORDER BY clicks DESC LIMIT ?

我如何使用占位符获得我需要的行为?这是否可能?下面是完整的代码语句,其中data.topUsersCount是一个整数值:

con.query("SELECT userName, clicks FROM users ORDER BY clicks DESC LIMIT ?", [data.topUsersCount], (err, topUsersData) => {
    // Handle data
});

我也try 使用双倍占位符??,但也不起作用.

推荐答案

以下是您可以在代码中处理此问题的方式:

if (Number.isInteger(data.topUsersCount)) {
  let queryString = "SELECT userName, clicks FROM users ORDER BY clicks DESC LIMIT " + data.topUsersCount;

  con.query(queryString, (err, topUsersData) => {
    // Handle data
  });
} else {
  // Handle error
  console.log("Invalid limit value");
}

在上面的代码中,Number.isInteger(data.topUsersCount)用于在将data.topUsersCount合并到查询字符串之前判断它是否为安全整数.这对于防止SQL注入攻击至关重要.

Javascript相关问答推荐

阻止iOS浏览器在传输摄像机视频时启用全屏摄像机模式

Regex可以 Select 以任何顺序匹配组

如何使用3个部件之间的路由?

如何从defineExpose访问数据和方法

深嵌套的ng-container元素仍然可以在Angular 布局组件中正确渲染内容吗?

函数返回与输入对象具有相同键的对象

Mongoose post hook在使用await保存时不返回Postman响应

空的结果抓取网站与Fetch和Cheerio

Prisma具有至少一个值的多对多关系

我的角模板订阅后不刷新'

Angular 中的类型错误上不存在获取属性

未加载css colored颜色 ,无法将div设置为可见和不可见

Reaction Redux&Quot;在派单错误中检测到状态Mutations

从另一个数组中的对应行/键值对更新数组中的键值对对象

删除元素属性或样式属性的首选方法

FireBase云函数-函数外部的ENV变量

如何在AG-Grid文本字段中创建占位符

Reaction useState和useLoaderData的组合使用引发无限循环错误

P5JS-绘制不重叠的圆

JavaScript -复制到剪贴板在Windows计算机上无效