插入查询无法在表中插入数据

时间:2017-04-11 05:50:35

标签: mysql node.js react-native react-native-android react-native-ios

我正在使用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();

      }

4 个答案:

答案 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 ('?', '?', '?','?')");