node-mysql中占位符?的使用

要mysql执行的命令串如果是固定的,那么不需要使用占位符,如果其中的一些参数允许在执行前可自由设定,那么使用占位符就很必要,这样你可以不需要由自己来拼接出一个完整的执行串,只需要在执行串模板上将占位符的参数设置成需要的值就可以了,由node-mysql来完成最终执行串的生成。

let sqlstr='select studentname from table where score >= ? and score <= ? '
connect.query(sqlstr,[85,100])

占位符??用于替换表名和字段名,占位符?用于替换字段值,注意了,每个占位符与你传入的参数要一一对应。

let sqlstr='select studentname from table where ?? >= ? and score <= ? '
connect.query(sqlstr,["score",85,100])

批量插入场景就最适合用占位符了。

let sqlstr='insert into table(studentname,gender,score) values ? '
indata=[
["张三","男",98],
["李四","女",95]
]
connect.query(sqlstr,[indata])

如果表比较宽,字段太多,写在模板串里太长,怕出错怎么办?这个自己把模板串拼接下:

let fileds=["f1","f2","f3","f4","f5","f6","f7","f8"];
let sqlcmd='insert into a('+fileds.join()+') values ?'

就插入一条记录,但是values来自几个不同的源,比如f1,f2来自item1,f3,f4,f5来自item2,f6,f7,f8来自item3,有简单的插入办法么?好办!

let fileds=["f1","f2","f3","f4","f5","f6","f7","f8"];
let sqlcmd='insert into a('+fileds.join()+') values (?,?,?)'
let item1=[1,2]
let item2=[3,4,5]
let item3=[6,7,8]
connect.query(sqlstr,[item1,item2,item3])

mysql.format是个好的测试工具,如果对字符串的书写不放心,没有把握,可以先在本地输出下mysql.format结果,不必直接发到mysql的DB上去执行检验。

const mysql = require("mysql"); 
let fileds=["f1","f2","f3","f4","f5","f6","f7","f8"];
let sqlcmd='insert into a('+fileds.join()+') values (?,?,?)'
let indata=[[1,2],[3,4,5],[6,7,8]]
console.log(mysql.format(sqlcmd,indata))
//输出 insert into a(f1,f2,f3,f4,f5,f6,f7,f8) values (1, 2,3, 4, 5,6, 7, 8)

相关推荐

  1. node-mysql?使用

    2024-06-10 09:36:03       45 阅读
  2. Mybatis使用名称

    2024-06-10 09:36:03       59 阅读
  3. go fmt

    2024-06-10 09:36:03       56 阅读
  4. js ${} 使用

    2024-06-10 09:36:03       49 阅读
  5. 将SQL替换成参数

    2024-06-10 09:36:03       17 阅读
  6. 哈哈哈哈

    2024-06-10 09:36:03       58 阅读
  7. Rust 语言 println! 宏格式

    2024-06-10 09:36:03       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-10 09:36:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-10 09:36:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-10 09:36:03       82 阅读
  4. Python语言-面向对象

    2024-06-10 09:36:03       92 阅读

热门阅读

  1. 007 CentOS 7.9 apache-tomcat-9.0.89安装及配置

    2024-06-10 09:36:03       32 阅读
  2. 设计模式-策略模式

    2024-06-10 09:36:03       32 阅读
  3. 密码学及其应用——安全邮件、公钥密码学和PKI

    2024-06-10 09:36:03       38 阅读
  4. 语法、语义、语用与向量化

    2024-06-10 09:36:03       36 阅读
  5. 给gRPC增加负载均衡功能

    2024-06-10 09:36:03       36 阅读
  6. websocket发送数据

    2024-06-10 09:36:03       36 阅读
  7. Spring (49)OpenFeign

    2024-06-10 09:36:03       32 阅读
  8. 神经网络----现有网络的下载和使用(vgg16)

    2024-06-10 09:36:03       29 阅读