gpt4 book ai didi

mysql - INSERT INTO 正在向 mySQL 表中插入空值

转载 作者:行者123 更新时间:2023-11-29 05:54:52 24 4
gpt4 key购买 nike

我正在尝试使用 ReactNative、Express.js 和 mySQL 制作用户注册应用程序。我有以下登录功能代码:

login = () => {

fetch('http://[myipaddress]/users', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
username: this.state.username,
password: this.state.password,
insert: false
})
})

.then((response) => response.json())
.then ((res) => {

if(res.success === true){
AsyncStorage.setItem('user', res.user);
this.props.navigation.navigate('Profile');
}
else{
alert(res.message);
}

})
.done();
}

注册代码如下所示。

userRegister = () =>{

fetch('http://[myipaddress]/users', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
username: this.state.username,
email: this.state.email,
password: this.state.password,
insert: true
})
})

.then((response) => response.json())
.then((responseJson) => {
alert(responseJson);
})
.catch((error)=>{
console.error(error);
});
}

最后,这是 users.js 中的插入代码:

var express = require('express');
var router = express.Router();
var mysql = require('mysql');

var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'users'
});

router.post('/', function(req, res, next) {

var username = req.body.username;
var email = req.body.email;
var password = req.body.password;
var insert = req.body.insert;

console.log(username);
console.log(email);
console.log(password);

if (insert === false) {
connection.query(
"SELECT * FROM user WHERE username = ? AND password = ?",
[username, password], function (err, row, field) {

if (err) {
console.log(err);
res.send({ 'success': false, 'message': 'Could not connect' });
}

if (row.length > 0) {
res.send({ 'success': true, 'user': row[0].username });
} else {
res.send({ 'success': false, 'message': 'User not found' });
}

});
} else {
connection.query(
"INSERT INTO user(username, email, password) VALUES (username,email,password)",
function (err, result) {

if (err) {
res.send({ 'success': false, 'message': 'Could not connect' });
}
else{
res.send({ 'success': true, 'message': 'User created' });
}
});
}
});

module.exports = router;

所以基本上,如果 insert 为 false,则意味着应用程序正在尝试登录并且只需要检查用户是否存在。这部分工作正常。但是,如果 insert 为真,则应将新用户信息插入到表中。但出于某种原因,它插入了空值,如下所示: Screenshot

用户名 John 的第一个插入应该是这样的,我在 phpMyAdmin 中手动插入。其他的是通过应用程序进行的插入,如您所见,所有值都是空的。控制台日志可以很好地打印出这些值,所以我知道它们按照应有的方式存储在变量中,只是由于某种原因没有被插入。

最佳答案

您需要在 VALUES 列表中使用占位符,就像您在 SELECT 查询中所做的那样。

    connection.query(
"INSERT INTO user(username, email, password) VALUES (?, ?, ?)",
[username, email, password],
function (err, result) {

关于mysql - INSERT INTO 正在向 mySQL 表中插入空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50432930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com