#javascript #html #mysql #node.js #express
#javascript #HTML #mysql #node.js #выразить
Вопрос:
id
и cost
являются целыми числами и не могут быть нулевыми.
Я получаю эту ошибку:
‘Ошибка: ER_BAD_FIELD_ERROR: неизвестный столбец ‘неопределенный’ в ‘списке полей»
var sql = "INSERT INTO Paintings(`painting_id`,`painting_title`,`img`,`cost`) VALUES(" id ",'" title "','" img "'," cost ")";
Это моя html-форма
<form action="/post" method="POST">
<div class="form-group">
<label>Painting id </label>
<input type="text" name="painting_id" id="painting_id" >
</div>
<div class="form-group">
<label>Painting Title</label>
<input type="text" name="painting_title" id="painting_title" >
</div>
<div class="form-group">
<label>Image </label>
<input type="src" name="img" id="img">
</div>
<div class="form-group">
<label>Cost </label>
<input type="text" name="cost" id="cost">
</div>
<br/>
<input type="submit" value="create painting"/>
</form>
Это мой код на стороне сервера
const express = require("express");
const app = express();
const bodyParser = require("body-parser");
var mysql = require('mysql');
var session = require("express-session");
app.use(express.static(__dirname '/public'));
app.set("view engine", "ejs");
var urlencodedParser= bodyParser.urlencoded({extended: false});
app.use(express.json());
//======SQL CONNECTION========
var connection = mysql.createConnection({
host: 'localhost',
user: 'admin',
password: 'admin',
database: 'artdb'
});
connection.connect(function(err){
if(err){
throw(err);
}
console.log("Connected to database");
})
app.get('/admin/painting',function(req,res){
connection.query(`select * from Paintings`,(err,result,fields)=>{
if(err){
return console.log(err);
}
res.render("painting",{page_title:"Customers - Node.js",userData: result});
});
});
app.get('/painting/add', function(req,res,next){
res.render('add_painting');
})
app.post('/post', function (req,res,next){
var id= req.body.painting_id;
var title = req.body.painting_title;
var img = req.body.img;
var cost = req.body.cost;
var sql = "INSERT INTO Paintings(`painting_id`,`painting_title`,`img`,`cost`) VALUES(" id ",'" title "','" img "'," cost ")";
connection.query(sql,function(err,result){
if(err) throw(err);
console.log("Data Inserted");
res.redirect('/admin/painting');
});
});
app.listen(1100, ()=> {
console.log("Server is running");
})
Комментарии:
1.
id
должно бытьundefined
тогда, поскольку это то, что указывает ошибка2. Является ли столбец painting_id автоинкрементным?
3. нет, ПЕРВИЧНЫЙ КЛЮЧ painting_id INT
4. @JaromandaX Я определил идентификатор как: var id= req.body.painting_id;
5. в этом случае
req.body.painting_id
не определено
Ответ №1:
Вам необходимо использовать анализатор тела urlencoded в вашем экспресс-приложении
app.use(bodyParser.urlencoded({ extended: false }))
просто объявляю
var urlencodedParser= bodyParser.urlencoded({extended: false});
на самом деле он не применяется к вашему приложению