node.js连接mysql(注册)

1. html页面(ajax请求)

代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <label>姓名:</label><input type="text"><br>
    <label>年龄:</label><input type="text"><br>
    <label>住址:</label><input type="text"><br>
    <button>注册</button>
    <script>
    let input=document.querySelectorAll("input");
   
    let button=document.querySelector("button");
    let url="http://localhost:9001";
    button.onclick=function(){
        let name=input[0].value;
        // console.log(name);
        let age=input[1].value;
        let addr=input[2].value;
        //1.创建请求对象
        let xhr=new XMLHttpRequest();
        let Surl=`name=${name}&age=${age}&addr=${addr}`
         
        //2.打开链接
        xhr.open("post",url);
        //3.接受服务器响应
        xhr.onreadystatechange=function(){
            if(this.readyState==4&&this.status==200){
                console.log(this.responseText);//将接收到的服务器数据显示
            }
        }
        //4..发送请求
        console.log(Surl)
        xhr.send(Surl)
        
    }
    
    </script>
</body>
</html>

2. js模块

注:需要先在命令行里下载mysql包。
 cnmp install mysql
代码:
let http=require("http");
let mysql=require("mysql");
let PORT="9001";//端口
http.createServer(function(req,res){
    res.setHeader("Access-Control-Allow-Origin","*");
    //POST请求
    let data="";
    req.on("data",function(chunk){
        data+=chunk;
    });
    req.on("end",function(){
        // console.log(data);
        let arr=data.split("&");
        let name,age,addr; 
        arr.forEach(function(item){
            let con=item.split("=")[0];
            if(con=="name"){
                name=item.split("=")[1];
            }else if(con=="age"){
                age=item.split("=")[1];
            }else if(con=="addr"){
                addr=item.split("=")[1];
            }
        });
        //将数据存入数据库
        saveData(name,age,addr,function(result){
            res.write(JSON.stringify(result));
            res.end();
        })
    });


}).listen(PORT)
console.log("服务器开启成功。。。。。。。。")

function saveData(name,age,addr,fn){
    let conn=mysql.createConnection({
        host:"localhost",       //主机名
        user:"xxx",        //数据库账户名
        password:"xxx",    //数据库密码
        database:"mytest1"      //要连接的数据库名称
    });
    //创建链接
    conn.connect();
    //操作(增删改查)  参数一:sql语句;参数二:回调函数
    let sql=`insert into mytest1.stduent(name,age,address) values ('${name}',${age},'${addr}');`;
    conn.query(sql,function(err,result){
        if(!err){
            console.log("数据库访问成功",result);
            fn({code:200,msg:"注册成功"})
        }else{
            console.log("数据库访问失败",err)
        }
    });
    //断开链接
    conn.end();
}

3. 可能问题:

在这里插入图片描述

3.1 原因解释:

主要原因是mysql服务器要求的认证插件版本与客户端不一致造成的。

3.2 解决办法:

这里改成:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你想设置的MySQL登录密码';

这行代码有两层含义,第一:修改root的密码为’你想设置的MySQL登录密码’,摒弃原来的旧密码。第二:使用mysql_native_password对新密码进行编码。

mysql> flush privileges;//刷新
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值