我正在使用node.js将用户注册到我的本机应用程序中。由于选择查询工作正常并且我能够登录,因此似乎没有任何错误。但是当我尝试插入值时,我的表中没有更新。代码中似乎没有任何错误。查询似乎在mysql中正常工作。
var express = require('express');
var router = express.Router();
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database:'SampleDb',
})
router.get('/', function(req, res, next) {
var name = req.body.name;
var email = req.body.email;
var password = req.body.password;
var phone = req.body.phone;
connection.query("INSERT INTO reg (id,name,email,password,phone) VALUES (null,'?', '?', '?','?')"),[name,email,password,phone];
});
module.exports = router;
这是我的反应原生代码
constructor(props) {
super(props);
this.state = {
name:'',
email:'',
password:'',
phone:'',
}
};
Reg = () => {
fetch('http://192.168.0.20:3000/UserReg', {
method : 'POST',
headers: {
'Accept': 'application/json',
'Content-type': 'application/json',
},
body: JSON.stringify({
email:this.state.email,
name:this.state.name,
password:this.state.password,
phone:this.state.phone,
})
})
.then((response) => response.json())
.then((res) => {
if(res.success=== true){
var email = res.message;
AsyncStorage.setItem('email', email);
Actions.Ideas();}
else {
alert(res.message);
}
})
.done();
}
答案 0 :(得分:0)
表名和字段名不需要引号,这可能是问题所在。
答案 1 :(得分:0)
插入查询需要包含要插入的数据。
connection.query("INSERT INTO 'user'('name', 'email', 'password', 'phone') VALUES (?,?,?,?)", function(err,row,fields) {}
应该是
connection.query("INSERT INTO 'user'('name', 'email', 'password', 'phone') VALUES (?,?,?,?)",
[name, email, password, phone],
function(err,row,fields) {}
或者你可以试试:
connection.query("INSERT INTO user SET ?",
{name: name, email: email, password: password, phone :phone},
function(err,row,fields) {}
参考:https://www.npmjs.com/package/mysql#getting-the-id-of-an-inserted-row
答案 2 :(得分:0)
我不知道您在查询中插入值的位置。有很多方法可以做到这一点,我建议使用ES6模板文字将变量插入到查询字符串中,如下所示:
connection.query(
`INSERT INTO user ('name', 'email', 'password', 'phone')
VALUES (${name},${email},${password},${phone})`,
function(err,row,fields) {
if(err) {
console.log(err);
}
});
REF:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Template_literals
此外,表格用户在查询字符串
中不需要引号答案 3 :(得分:0)
像这样使用
connection.query("INSERT INTO `patients` (name, email,password,phone)
VALUES ('?', '?', '?','?')");