mysql-将数组值作为列而不是值进行转义和读取时出现问题
我有一个疑问:mysql-将数组值作为列而不是值进行转义和读取时出现问题,mysql,Mysql,我有一个疑问: 选择 身份证件 名称 姓氏 从…起 使用者 哪里 名称(??) 然后像这样使用它: 从“/sql/querys”导入{sqlQuerySeenAbove} 异步函数createReport(){ 试一试{ const arrOfStrings=['John','Laura'] const pool=await getConnection() const res=pool.query(sqlQuerySeenAbove,conn.escape(arrOfStrings)) con
选择
身份证件
名称
姓氏
从…起
使用者
哪里
名称(??)
然后像这样使用它:
从“/sql/querys”导入{sqlQuerySeenAbove}
异步函数createReport(){
试一试{
const arrOfStrings=['John','Laura']
const pool=await getConnection()
const res=pool.query(sqlQuerySeenAbove,conn.escape(arrOfStrings))
console.log('res-->',res)
}捕获(e){
控制台日志(e)
}
}
我收到的错误消息是:
“where子句”中的未知列“John”、“Laura”
姓名(`John',`Laura`)\n
我认为问题在于,在这个()
部分中,mysql正在放置返回标记,以表示它正在查找列而不是值
- 数组转换为列表,例如,['a','b']转换为'a','b'
?
用作转义字符的占位符,但是,如果我这样做:
pool.query(sqlquerysenabove,arrOfStrings)
我得到一个错误:
“where子句”中的未知列“John”
注意:我理解转义在安全性方面有它自己的问题,但这是内部使用,所以为了便于讨论,让我们假设我们不担心任何sql注入
我想要的是这个的回报:
/------------------------------------\
| id | name | lastName |
|------------------------------------|
| 1 | John | Smith |
|------------------------------------|
| 2 | John | Doe |
|------------------------------------|
| 3 | Laura| Smith |
|------------------------------------|
| 4 | Laura| Doe |
\------------------------------------/
我的问题是我必须改变两件事:
(?)
仅使用(?)
,这是因为?
是转义的缩写,因此将查找列名而不是值pool.query(sqlQuerySeenAbove,arrOfStrings)
arrOfStrings
需要是一个嵌套数组,因此最终的解决方案是:pool.query(sqlqueryseenaove[arrOfStrings])
[['John', 'Laura'], ['Smith', 'Doe']]
mysql将遍历第一个数组,然后遍历第二个数组