我有一个简单的nodejs应用程序,它执行以下查询。
select * from User where userid in (?)
我得到的用户ID是从客户端发送的JSON数组。我如何在这个选择查询中使用它?我试过了 1.本身但不起作用。 2.将其转换为Javascript数组,无法正常工作
答案 0 :(得分:8)
如果您使用的节点模块如mysql,则第二种方法应该有效。
var query=select * from User where userid in (?);
var data=['a','b','c'];
var queryData=[data];
conn.query(query, queryData, function (err, results) {})
根据documentation,“阵列变成列表,例如['a','b']变成'a','b'”。所以这种方法应该有效(我已经实际使用过它了。)
答案 1 :(得分:1)
重温这一点,因为问题的原始方法是有效的,但有一些警告。如果您唯一的转义参数是IN子句中的参数,那么您必须将其指定为嵌套数组;例如:[[' usrId1',' usrId2',' usrIdN']]。这是因为取消转义的功能需要一个阵列,取代每个'?'与相应的数组元素。所以,如果你想更换你唯一的'?'使用数组,该数组应该是传递的所有参数的第一个元素。如果您有多个'?',语法更直观,但最终一致且相同;在这种情况下,您可以将您的论点类似于:[' myOtherArgument1',' myOtherArgument2',[' usrId1',' usrId2', ' usrIdN'],' myOtherArgument3']
答案 2 :(得分:0)
你可以这样做: select * from user where userid in(?,?,?,?)
var array = [];
array.push(value);
array.push(value);
array.push(value);
array.push(value);
然后使用array作为应该绑定的参数。
答案 3 :(得分:0)
这是我试过的两种方法。两者都有效。然后我用更好的方法改变了我的逻辑,所以现在我不需要在'条款不再。
答案 4 :(得分:0)
这样的事可以奏效!
// get your possible IDs in an array
var ids = [1,2,3,4,5];
// then, create a dynamic list of comma-separated question marks
var tokens = new Array(ids.length).fill('?').join(',');
// create the query, passing in the `tokens` variable to the IN() clause
var query = `SELECT * FROM User WHERE userid IN (${tokens})`;
// perform the query
connection.query(query, ids, (err, data) => {
// do something with `err` or `data`
});
答案 5 :(得分:0)
//用逗号获取查询字符串数据 var param = req.params ['ids'];
//damy data var param = [1,2,3,4,5];
var array = params.split(“,”)。map(Number);
/// select查询中的注释不使用“和”(逗号和撇号)
//只需在键盘上的数字键之前先使用`(重音符)第一个键
con.query(`select * from TB_NAME where COL IN(?)`,[array],(err,rows,fields)=>{
res.json(行); });
答案 6 :(得分:0)
let val = ["asd","asd"]
let query = 'select * from testTable where order_id in (?)';
connection.query(query, [val], function (err, rows) {
});
在Node中,您需要将数组放入数组中。
答案 7 :(得分:0)
如果将数组传递给参数,则它将在节点using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Test
{
public partial class Form1 : Form
{
private int x, y;
private int gap = 0;
private int startingY = 83;
private GroupBox lastGB = null;
public Form1()
{
InitializeComponent();
button1.Text = "Details " + char.ConvertFromUtf32(8595);
}
下起作用。参数已经作为数组传递,因此您的第一个参数必须是数组mysql2
。
[[1,2,3]]
select * from User where userid in (?)