【问题标题】:sending data from client to mysql database从客户端发送数据到mysql数据库
【发布时间】:2021-11-03 03:19:10
【问题描述】:

我正在尝试通过节点 js / expressjs 将表单数据从 react 发送到 mysql 数据库 现在我什么都没有得到没有错误没有数据

这是服务器代码:

app.use(express.urlencoded({ extended: true }));
app.use(express.json());

app.post("/api/insert", (req, res) => {
  const userName = req.body.userName;
  const userDOB = req.body.userDOB;
  const userEmail = req.body.userEmail;
  const userPassword = req.body.userPassword;

  const sqlInsert =
    "INSERT INTO tblUser (strName,dtmDOB,strEmail,strPassword) VALUES (?,?)";
  db.query(
    sqlInsert,
    [userName, userDOB, userEmail, userPassword],
    (err, result) => {
      if (err) throw err;
      console.log("record added");
    }
  );
});

这是我的客户端代码:

const [userName, setUserName] = useState("");
  const [userPassword, setUserPassword] = useState("");
  const [userEmail, setEmail] = useState("");
  const [userDOB, setUserDOB] = useState("");

  const submitForm = () => {
    Axios.post("http://localhost:4000/api/insert", {
      userName: userName,
      userDOB: userDOB,
      userEmail: userEmail,
      userPassword: userPassword,
    }).then(() => {
      alert("success");
    }); 

是 axios 还是 express 的问题? 知道出了什么问题吗?

【问题讨论】:

  • 我不知道有一种方法可以将“INSERT”sql 语句的值指定为参数,并让 SQL 组装它们。我总是用内联的所有变量组装字符串(在字符串的“VALUES”部分。)

标签: mysql node.js reactjs express


【解决方案1】:

请用这个

const sqlInsert = "INSERT INTO tblUser (strName,dtmDOB,strEmail,strPassword) VALUES (?,?,?,?)";

而不是

const sqlInsert = "INSERT INTO tblUser (strName,dtmDOB,strEmail,strPassword) VALUES (?,?)";

db.js:

function query(sql, params, callback) {
  const connection = mysql.createConnection(config.db)
  connection.execute(sql, params, callback);
}

index.js:

app.post("/api/insert", async (req, res) => {
  console.log(req.body)
  const userName = req.body.userName;
  const userDOB = req.body.userDOB;
  const userEmail = req.body.userEmail;
  const userPassword = req.body.userPassword;

  const sqlInsert = "INSERT INTO users (strName,dtmDOB,strEmail,strPassword) VALUES (?,?,?,?)";
  db.query(
    sqlInsert,
    [userName, userDOB, userEmail, userPassword],
    (err, result) => {
      if (err) throw err;
      console.log("record added");
    }
  );
});

结果:

Example app listening at http://localhost:4400
{
  userName: 'aaaabbbb',
  userDOB: 'ddddbbbb',
  userEmail: 'aaaa21@gmail.com',
  userPassword: 'aaaabbbb'      
}
record added

【讨论】:

  • 我替换这两个?其中四个仍然是同样的问题,那么 db.js 我的数据库是 ``` const db = mysql.createPool({ host: "localhost", password: "admin123", user: "admin", database: "db ", }); ```
  • 我想我发现了我没有通过我的 id 但 id 应该是自动递增并且它不工作的问题是什么,我每次都必须插入它知道如何处理它?
  • 这是否意味着 id 字段自动递增但仍然不起作用?或者您不想让 id 字段自动递增吗?想知道如果 id 值不是自增的怎么处理?
  • 我认为最好的解决方案是让 id 自动递增。
  • id 是自动递增的,但如果我没有像上面那样将它包含在插入中,即使它是自动递增的,它也不会插入。知道如何在代码中处理它吗?
猜你喜欢
  • 2014-10-11
  • 2017-08-15
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多