日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

expressjs如何做mysql注入_Node.js+Express+Mysql 实现增删改查

發布時間:2025/3/11 数据库 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 expressjs如何做mysql注入_Node.js+Express+Mysql 实现增删改查 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這次選用nodejs+express+mysql 使用http作為客戶端,express框架搭建服務端,從而實現數據的增刪改查。這篇文章可以算作上篇文章的升級篇,加入了和數據庫的交互。

安裝

node 直接去官網下載選擇下載即可https://nodejs.org/en/download/current/

cnpm install express //express框架安裝

cnpm install mysql //mysql驅動安裝

brew install mysql //數據庫的安裝,根據命令行提示初始化配置

mysql.server start//啟動mysql服務

mysql.server stop//停止mysql服務

mysql -u用戶名 -p用戶密碼//登錄mysql

nodejs連接數據庫時報錯

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support

authentication protocol requested by server; consider upgrading MySQL client

查到的結論是: MySQL8.0版本的加密方式和MySQL5.0的不一樣,連接會報錯。

解決方法如下: 通過命令行進入解壓的mysql根目錄下。

登陸數據庫

mysql -uroot -p

輸入root的密碼

Enter password: ******

更改加密方式

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

更改密碼:該例子中 123456為新密碼

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

刷新:

mysql> FLUSH PRIVILEGES;

數據庫的連接

var mysql = require('mysql');//引入數據庫驅動模塊

//console.log(mysql)

// 連接數據庫的配置

var connection = mysql.createConnection({

// 主機名稱,一般是本機

host: 'localhost',

// 數據庫的端口號,如果不設置,默認是3306

port: '3306',

// 創建數據庫時設置用戶名

user: 'root',

// 創建數據庫時設置的密碼

password: '*******',

// 創建的數據庫

database: 'express'

});

// 與數據庫建立連接

connection.connect();

// 查詢數據庫

connection.query('select * from userinfo', function (error, results, fields) {

if (error) throw error;

console.log(results);

});

// 關閉連接

connection.end();

新建一張表格在數據庫中為:

express服務端

Express 是一個基于 Node.js 平臺的極簡、靈活的 web 應用開發框架,這里沒有搭建express框架的項目,只是簡單搭建一個服務端,實現和數據庫的增刪改查。

var express = require("express");

var app = express();

var query = require('./db')

//var router =require('router')

var mysql = require('mysql');

var querystring = require("querystring");

//console.log(mysql)

// 連接數據庫的配置

var connection = mysql.createConnection({

// 主機名稱,一般是本機

host: 'localhost',

// 數據庫的端口號,如果不設置,默認是3306

port: '3306',

// 創建數據庫時設置用戶名

user: 'root',

// 創建數據庫時設置的密碼

password: '1234567',

// 創建的數據庫

database: 'express'

});

// 與數據庫建立連接

connection.connect();

//根據參數,查詢數據

app.get('/index', function (req, res) {

// 處理 get 請求,獲取 get 請求參數

//處理 /:xxx 形式的 get 或 post 請求,獲取請求參數 這里沒有使用到

var params = req.query

//查詢語句

var sql = 'select * from userinfo where name= ? and age=?'

var where_value = [params.name, params.age];

// console.log(sql)

connection.query(sql, where_value, function (err, result) {

if (err) {

console.log('[SELECT ERROR]:', err.message);

}

res.send(result) //數據庫查詢結果返回到result中,把查詢數據發送到客戶端

});

})

//增加數據

app.post('/add', function (req, res) {

//獲取及處理增加的數據

var post = '';

req.on('data', function (chunk) {

post += chunk;

console.log(post)

});

req.on('end', function () {

//查詢參數解析

post = querystring.parse(post);

var sql = 'insert into userinfo set id=? , name=? , age=?, address=?'

var add_value = [post.id, post.name, post.age, post.address]

connection.query(sql, add_value, function (err, result) {

if (err) {

console.log('新增數據失敗');

}

res.send('增加數據成功') // 響應內容 增加數據成功

});

});

})

//修改數據

app.put('/update', function (req, res) {

//處理請求修改的數據和條件

var update = '';

req.on('data', function (chunk) {

update += chunk;

console.log(update)

});

req.on('end', function () {

//查詢參數解析

update = querystring.parse(update);

var sql = 'update userinfo set name=? , age=?, address=? where id=?'

var update_value = [update.name, update.age, update.address,update.id]

connection.query(sql, update_value, function (err, result) {

if (err) {

console.log('修改數據失敗', err.message);

}

res.send('修改數據成功') // 響應內容 修改數據成功

});

});

})

//刪除數據

app.delete('/delete', function (req, res) {

var params = req.query

var sql = 'delete from userinfo where name= ?'

var where_value = [params.name];

// console.log(sql)

connection.query(sql, where_value, function (err, result) {

if (err) {

console.log('刪除失敗', err.message);

}

res.send('刪除成功')

});

})

//關閉連接

//connection.end();

//監聽8080端口

var server = app.listen(8080, function () {

console.log('server running at 3000 port')

})

http客戶端

這里把node http模塊來搭建客戶端,發起請求。

get請求

const http = require("http");

// 發送請求的配置

let config = {

host: "localhost",

port: 8080,

//get請求參數

path:'/index?name=bill&age=21',

method: "GET",

headers: {

a: 1

}

};

// 創建客戶端

let client = http.request(config, function(res) {

// 接收服務端返回的數據

let repData='';

res.on("data", function(data) {

repData=data.toString()

console.log(repData)

});

res.on("end", function() {

// console.log(Buffer.concat(arr).toString());

});

});

// 發送請求

client.end();

客戶端發起參數name=bill&age=21的查詢請求,服務端根據條件操作數據庫,響應數據為:

post請求

var http = require('http');

var querystring = require("querystring");

//查詢參數拼接

//增加的數據

var contents = querystring.stringify({

id:5,

age:'23',

name: "艾利斯提",

address: "dongbei",

});

var options = {

host: "localhost",

port: 8080,

path:"/add",

method: "POST",

headers: {

"Content-Type": "application/x-www-form-urlencoded",

"Content-Length": contents.length

}

};

var req = http.request(options, function (res) {

res.setEncoding("utf8");

res.on("data", function (data) {

console.log(data);

})

})

//發送數據

req.write(contents);

req.end(); //結束請求,否則服務器將不會收到信息

post請求發送增加數據,服務端根據請求,向數據庫追加一條數據,響應客戶端:增加數據成功。增加后的數據表:

put請求

const http = require("http");

var querystring = require("querystring");

//查詢參數拼接

// 發送請求的配置

var contents = querystring.stringify({

id:1,

age:'25',

name: "Sarah",

address: "qingdao",

});

let config = {

host: "localhost",

port: 8080,

path:'/update',

method: "PUT",

headers: {

a: 1

}

};

// 創建客戶端

let client = http.request(config, function(res) {

// 接收服務端返回的數據

let repData='';

res.on("data", function(data) {

repData=data.toString()

console.log(repData)

});

});

client.write(contents);

// 發送請求

client.end();

這里請求和post方法類似,服務端根據sql語句('update userinfo set name=? , age=?, address=? where id=?')修改數據庫的內容,響應客戶端:修改數據成功。修改后的數據表:

delete請求

const http = require("http");

// 發送請求的配置

let config = {

host: "localhost",

port: 8080,

//刪除數據的參數

path:'/delete?name=bill',

method: "DELETE",

headers: {

a: 1

}

};

// 創建客戶端

let client = http.request(config, function(res) {

// 接收服務端返回的數據

let repData='';

res.on("data", function(data) {

repData=data.toString()

console.log(repData)

});

res.on("end", function() {

// console.log(Buffer.concat(arr).toString());

});

});

// 發送請求

client.end();

客戶端發送刪除數據的參數,客戶端拿到參數,根據條件,操作數據庫刪除相應數據,響應客戶端:刪除成功。刪除后的數據表:

總結

接觸后端的內容后,從后端的角度重新理解了前端數據的傳輸和操作。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持。

總結

以上是生活随笔為你收集整理的expressjs如何做mysql注入_Node.js+Express+Mysql 实现增删改查的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。