node-mysql中占位符?的使用

打印 上一主题 下一主题

主题 629|帖子 629|积分 1897

要mysql实行的命令串假如是固定的,那么不需要使用占位符,假如其中的一些参数允许在实行前可自由设定,那么使用占位符就很必要,这样你可以不需要由自己来拼接出一个完整的实行串,只需要在实行串模板大将占位符的参数设置成需要的值就可以了,由node-mysql来完成终极实行串的生成。
  1. let sqlstr='select studentname from table where score >= ? and score <= ? '
  2. connect.query(sqlstr,[85,100])
复制代码
占位符??用于替换表名和字段名,占位符?用于替换字段值,留意了,每个占位符与你传入的参数要一一对应。
  1. let sqlstr='select studentname from table where ?? >= ? and score <= ? '
  2. connect.query(sqlstr,["score",85,100])
复制代码
批量插入场景就最适适用占位符了。
  1. let sqlstr='insert into table(studentname,gender,score) values ? '
  2. indata=[
  3. ["张三","男",98],
  4. ["李四","女",95]
  5. ]
  6. connect.query(sqlstr,[indata])
复制代码
假如表比较宽,字段太多,写在模板串里太长,怕出错怎么办?这个自己把模板串拼接下:
  1. let fileds=["f1","f2","f3","f4","f5","f6","f7","f8"];
  2. let sqlcmd='insert into a('+fileds.join()+') values ?'
复制代码
就插入一条记录,但是values来自几个不同的源,比如f1,f2来自item1,f3,f4,f5来自item2,f6,f7,f8来自item3,有简单的插入办法么?好办!
  1. let fileds=["f1","f2","f3","f4","f5","f6","f7","f8"];
  2. let sqlcmd='insert into a('+fileds.join()+') values (?,?,?)'
  3. let item1=[1,2]
  4. let item2=[3,4,5]
  5. let item3=[6,7,8]
  6. connect.query(sqlstr,[item1,item2,item3])
复制代码
mysql.format是个好的测试工具,假如对字符串的书写不放心,没有把握,可以先在本地输出下mysql.format结果,不必直接发到mysql的DB上去实行查验。
  1. const mysql = require("mysql");
  2. let fileds=["f1","f2","f3","f4","f5","f6","f7","f8"];
  3. let sqlcmd='insert into a('+fileds.join()+') values (?,?,?)'
  4. let indata=[[1,2],[3,4,5],[6,7,8]]
  5. console.log(mysql.format(sqlcmd,indata))
  6. //输出 insert into a(f1,f2,f3,f4,f5,f6,f7,f8) values (1, 2,3, 4, 5,6, 7, 8)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

来自云龙湖轮廓分明的月亮

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表