如何使用 node.js&Mysql 从在线表单向数据库添加数据?

Posted

技术标签:

【中文标题】如何使用 node.js&Mysql 从在线表单向数据库添加数据?【英文标题】:How to add data to database with node.js&Mysql from online form? 【发布时间】:2021-10-14 07:42:18 【问题描述】:

我正在尝试使用 mysql 和 node.js 将数据添加到数据库中,只需单击提交按钮,数据应该最终会出现在数据库中。我收到一条我有点理解的错误消息,但我不知道该怎么做。我希望你们中的一些人可以帮助我。没有完全完成和简化,但所有重要的东西都在那里。

我的表单 html

<!doctype html>
<html lang="en">
  <head>
    
    <title>Mr.Gutter</title>
   <script src="submitButtonClicked.js"></script>
   
  </head>
  <body>
    
<form>
    <div class="form-group">
        <label for="email">Email address</label>
        <input type="email"  id="email" aria-describedby="emailHelp" placeholder="Enter email" required>
        
   </div>
                
    <center>
    <button type="button"  id ="submitbt"onclick="submitForm()" >Submit</button>
    </center>
</form>


        <script >
       
            //work on it later
            //Openmanual();
        </script>

    
  </body>
</html>

按钮的javascript代码:

function submitForm()


    
    //get all elements from the form
    console.log('submitForm booting')
    
    var email=document.getElementById("email").value;
    

    console.log('values get....')
    console.log(email)

    dataTable()

dataTabel() 函数是它变得混乱的地方。

function dataTable()

    var mysql = require('mysql');


    var con = mysql.createConnection(

        host:"localhost",
        user:"root",
        password:"",
        database:"nodedb"

    )

    con.connect(function(err)
        if (err) throw err;
        console.log("Connected to The Database!");
        
        var sql="CREATE TABLE customers (email VARCHAR(255))";
        con.query(sql,function(err,result)
            if (err) throw err;
            console.log("Table has been created!")
        );

    );

当代码自行运行时,它似乎正在工作(我的意思是表已创建)但是当我尝试在网站上运行它时,我收到一条错误消息:

Uncaught ReferenceError: require is not defined
    at dataTable (submitButtonClicked.js:3)
    at submitForm (submitButtonClicked.js:54)
    at HTMLButtonElement.onclick (form.html:379)

(submitButtonClicked.js 是 Javascript 文件,form.html 是表单文件)我知道问题出在 require('mysql'); 部分,但它在它自己运行时可以工作,所以我需要一个解决方案:如何运行它在线?

【问题讨论】:

【参考方案1】:

Node.js 和您的浏览器都使用 Javascript。但是,它们是完全独立的环境。

不幸的是,您不能只从浏览器中调用 Node.js 函数。

您将需要构建一个单独的 Node.js 服务器。此服务器执行 MySQL 查询并应侦听 HTTP 请求。

您的客户端应该使用 HTTP 客户端(例如 fetch)调用您的服务器。只有当所有这些事情都到位时,您才能实现您希望做的事情。

【讨论】:

谢谢!我会试试看。看起来真的很干净。谢谢

以上是关于如何使用 node.js&Mysql 从在线表单向数据库添加数据?的主要内容,如果未能解决你的问题,请参考以下文章

node.js & mysql - 如何获取最后插入的 ID?

如何使用 node.js、socket.io 和 mysql 显示实时数据?

node.js mysql 池 beginTransaction & 连接

node.js + MySQL & JSON-result - 回调问题 & 对客户端无响应

Node.js + MySQL 实现数据的增删改查

Node.js & MySQL - 错误:1251 - 客户端不支持服务器请求的身份验证协议;考虑升级 MySQL 客户端