首頁 >web前端 >前端問答 >nodejs用mysql模糊查詢

nodejs用mysql模糊查詢

WBOY
WBOY原創
2023-05-28 09:21:07802瀏覽

隨著網路的蓬勃發展,如今的資料庫應用也變得越來越廣泛。而在資料庫領域中,MySQL是一個非常受歡迎的資料庫產品。同時,對於開發語言來說,JavaScript也是一種非常流行的語言,而Node.js正是建立在JavaScript之上的伺服器端開發環境。在Node.js與MySQL的結合中,能夠進行模糊查詢是非常必要的一項操作。今天,我們就來詳細了解nodejs用mysql模糊查詢實現的相關知識。

一、安裝Node.js及MySQL
在正式開始nodejs使用mysql模糊查詢之前,我們需要先安裝Node.js及MySQL,安裝步驟這裡不再贅述。

二、連接MySQL資料庫
在Node.js中連接MySQL資料庫需要使用到第三方模組mysql模組。因此需要透過npm安裝mysql模組,安裝方法為:在命令列中輸入npm install mysql。

在安裝完mysql模組後,我們需要引入mysql模組並建立連接。具體程式碼如下:

const mysql = require('mysql');

// 创建连接
const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'mydb'
});

connection.connect();

三、Node.js中的模糊查詢
#在Node.js中,模糊查詢可以利用MySQL的LIKE操作子來實作。 LIKE操作符用於在WHERE子句中搜尋列中的模式。基本語法如下:

SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;

在LIKE語法中,pattern是用來指定要搜尋的字串或字元模式的。在pattern中可以使用%和_通配符來進行模糊搜索,具體含義如下:
%:表示0個或多個字元。
_:表示任意單一字元。

假設我們有一個表students,其中包含了學生的姓名(name)和學號(sno)。我們現在需要查詢出所有姓張的學生資料。具體程式碼如下:

const searchName = '张';
const sql = `SELECT * FROM students WHERE name LIKE '%${searchName}%'`;

connection.query(sql, (err, results, fields) => {
   if (err) {
       console.error(err);
       return;
   }
   console.log(results);
});

connection.end();

透過上述程式碼,我們可以實現在students表中模糊查詢姓張的學生。在這裡,%通配符表示無論姓張後面跟什麼字元都可以匹配,因此可以查詢出所有姓張的學生資料。

四、避免SQL注入
雖然在上述程式碼中已經實作了模糊查詢,但卻有一個非常嚴重的問題,那就是SQL注入。在前面的程式碼中,我們直接將使用者輸入的搜尋內容拼接到SQL語句中,這會讓攻擊者有機會注入惡意程式碼。因此,我們需要遵循一些規則以規避這種風險。

一般來說,我們可以透過轉義字串來避免SQL注入。具體程式碼如下:

const searchName = mysql.escape(req.query.name);
const sql = `SELECT * FROM students WHERE name LIKE '%${searchName}%'`;

connection.query(sql, (err, results, fields) => {
   if (err) {
       console.err(err);
       return;
   }
   console.log(results);
});

connection.end();

在上述程式碼中,我們透過mysql.escape()方法對使用者輸入的搜尋內容進行了轉義。這樣就可以避免SQL注入的問題。

五、小結
在nodejs中使用mysql進行模糊查詢是一項非常實用且必要的操作。透過Node.js中封裝的mysql模組,我們可以輕鬆地與MySQL資料庫進行連接,並實作各種查詢操作。在進行模糊查詢時,我們需要注意避免SQL注入的風險,以確保資料的安全。

以上是nodejs用mysql模糊查詢的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn