欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql2/promise 中 execute 和 query 的使用最佳實(shí)踐

 更新時(shí)間:2025年08月28日 09:44:23   作者:清風(fēng)細(xì)雨_林木木  
mysql2/promise中,execute使用預(yù)處理語句,嚴(yán)格類型檢查且防SQL注入,適合頻繁執(zhí)行,query直接拼接SQL,參數(shù)綁定更寬松,適用于簡單查詢,LIMIT/OFFSET在query中不會(huì)報(bào)錯(cuò),execute需拼接數(shù)字常量,本文給大家介紹mysql2/promise中execute和query的使用,感興趣的朋友一起看看吧

mysql2/promise 中 execute 和 query 的使用

1.executevsquery

方法原理特點(diǎn)
db.execute()使用 Prepared Statement (預(yù)處理語句)參數(shù)嚴(yán)格類型檢查,性能穩(wěn)定,防 SQL 注入
db.query()直接拼接 SQL 發(fā)送給 MySQL 執(zhí)行參數(shù)綁定更寬松,對(duì) LIMIT/OFFSET 不會(huì)類型檢查

2. 為什么query可以?

因?yàn)?query 方法:

  • 不走 prepare + execute 兩階段過程
  • 而是 一次性發(fā)送完整 SQL(即使你用 ? 占位符,也只是 Node.js 側(cè)簡單替換后拼接),

所以,下面代碼對(duì) query 來說是可行的:

const sql = `SELECT * FROM dictionary ${searchQuery} ORDER BY id ASC LIMIT ? OFFSET ?`;
const [results] = await db.query(sql, [...searchParams, Number(pageSize), Number(offset)]);

3. 什么時(shí)候使用 query?

  • 語句不需要重復(fù)執(zhí)行、對(duì)性能要求不極致時(shí),可用 query,代碼更寬容。
  • 如果 LIMIT、OFFSET 參數(shù)會(huì)報(bào)錯(cuò),換 query 可以快速解決。

4. 什么時(shí)候使用 execute?

  • 當(dāng) SQL 需要頻繁執(zhí)行(如同一個(gè)查詢反復(fù)調(diào)用),使用 execute 結(jié)合 Prepared Statement 可以提升性能。
  • 需要嚴(yán)格防 SQL 注入時(shí),優(yōu)先 execute,但在 LIMIT/OFFSET 場(chǎng)景需改成拼接數(shù)字。

5. 最佳實(shí)踐

查詢數(shù)據(jù)

const sql = `SELECT * FROM table LIMIT ${Number(limit)} OFFSET ${Number(offset)}`;
const [rows] = await db.execute(sql, params);
// 或者
const [rows] = await db.query(sql, params);

更新/插入

const [result] = await db.execute('INSERT INTO user(name) VALUES(?)', [name]);

總結(jié)

queryLIMIT/OFFSET 場(chǎng)景下可直接使用,不會(huì)出現(xiàn) Incorrect arguments to mysqld\_stmt\_execute 錯(cuò)誤
如果使用 execute,LIMIT/OFFSET 需拼接數(shù)字常量

到此這篇關(guān)于mysql2/promise 中 execute 和 query 的使用最佳實(shí)踐的文章就介紹到這了,更多相關(guān)mysql execute 和 query使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解mysql持久化統(tǒng)計(jì)信息

    詳解mysql持久化統(tǒng)計(jì)信息

    這篇文章主要介紹了mysql持久化統(tǒng)計(jì)信息的相關(guān)資料,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-12-12
  • SQL group by去重復(fù)且按照其他字段排序的操作

    SQL group by去重復(fù)且按照其他字段排序的操作

    這篇文章主要介紹了SQL group by去重復(fù)且按照其他字段排序的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 解決JDBC的class.forName()問題

    解決JDBC的class.forName()問題

    這篇文章主要介紹了關(guān)于JDBC的class.forName()問題,比較兩個(gè)Java文件可見,連接Db2和連接MySQL的方式非常類似,唯一的區(qū)別在于,調(diào)用?DriverManager.getConnection()?方法時(shí),傳入的URL不同,本文給大家詳細(xì)講解,需要的朋友參考下
    2022-09-09
  • 解析SQLite中的常見問題與總結(jié)詳解

    解析SQLite中的常見問題與總結(jié)詳解

    本篇文章是對(duì)SQLite中的常見問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • MySQL8.0與MySQL5.7的區(qū)別詳解

    MySQL8.0與MySQL5.7的區(qū)別詳解

    MySQL8.0是2018年4月20日發(fā)布的全球最受歡迎的開源數(shù)據(jù)庫的一個(gè)非常令人興奮的新版本,下面這篇文章主要給大家介紹了關(guān)于MySQL8.0與MySQL5.7區(qū)別的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • MySQL基于DOS命令行登錄操作實(shí)例(圖文說明)

    MySQL基于DOS命令行登錄操作實(shí)例(圖文說明)

    這篇文章主要介紹了MySQL基于DOS命令行登錄操作,以圖文形式結(jié)合實(shí)例說明了MySQL登錄命令的基本用法,非常簡單易懂需要的朋友可以參考下
    2016-01-01
  • mysql myisam 優(yōu)化設(shè)置設(shè)置

    mysql myisam 優(yōu)化設(shè)置設(shè)置

    mysql myisam 優(yōu)化設(shè)置設(shè)置,需要的朋友可以參考下。
    2010-03-03
  • mysql中的group?by用法指南

    mysql中的group?by用法指南

    MySQL中的GROUP?BY是數(shù)據(jù)聚合分析的核心功能,主要用于將結(jié)果集按指定列分組,并結(jié)合聚合函數(shù)進(jìn)行統(tǒng)計(jì)計(jì)算,本文給大家介紹mysql中的group?by用法,感興趣的朋友跟隨小編一起看看吧
    2025-08-08
  • MySQL查詢重復(fù)記錄和刪除重復(fù)記錄的操作方法

    MySQL查詢重復(fù)記錄和刪除重復(fù)記錄的操作方法

    在MySQL數(shù)據(jù)庫中,有時(shí)候會(huì)出現(xiàn)重復(fù)記錄的情況,這可能會(huì)導(dǎo)致數(shù)據(jù)不準(zhǔn)確或者不符合業(yè)務(wù)需求,為了解決這個(gè)問題,我們可以使用查詢語句來找出重復(fù)記錄,并使用刪除語句來刪除這些重復(fù)記錄,本文給大家介紹了兩種操作方法,需要的朋友可以參考下
    2024-12-12
  • mysql中explain用法詳解

    mysql中explain用法詳解

    EXPLAIN用于SELECT語句中的每個(gè)表返回一行信息。表以它們?cè)谔幚聿樵冞^程中將被MySQL讀入的順序被列出
    2013-02-02

最新評(píng)論