javascript - 无法使用 nodeJs 从 Mysql 中删除行
问题描述
我使用 nodeJS 和 MySql 创建了一个宠物店网络应用程序。我能够成功地在数据中插入宠物信息,但我无法使用 pet_id 删除宠物。我收到以下错误
[代码:'ER_TRUNCATED_WRONG_VALUE',errno:1292,sqlMessage:“截断不正确的DOUBLE值:'pa04'”,sqlState:'22007',索引:0,sql:“从宠物中删除pet_id =
pet_id
='pa04'”]。
但是当我将 pet_id 设为 Integer 时;5 没有任何反应,甚至没有出现错误。我曾尝试在我的 ejs 中放入 Ajax 代码,但失败了。请帮我。提前致谢 :)
const { count } = require('console');
var express = require('express');
var mysql=require('mysql');
const { createConnection } = require('net');
var app = express();
var bodyparser=require('body-parser');
app.set("view engine","ejs");
app.use(bodyparser.urlencoded({extended:true}));
app.use(express.static(__dirname +"/public"))
var connection=mysql.createConnection({
host:'localhost',
user:'root',
database:'mini_project',
password:'password'
});
app.get("/animals", function(req, res){
var q="select animals.pet_id,pet_category,breed,weight,age,height,fur,cost from animals join pets on animals.pet_id= pets.pet_id";
connection.query(q,function(err,results){
if(err) throw err;
res.render("dogs_home",{data:results});
});
});
app.get("/birds", function(req, res){
var q="select birds.pet_id,type,noise,cost from birds join pets on birds.pet_id= pets.pet_id";
connection.query(q,function(err,results){
if(err) throw err;
res.render("birds_home",{data:results});
});
});
app.get("/",function(req,res){
res.render("home");
});
app.get("/accessories", function(req, res){
var q="select * from pet_products";
connection.query(q,function(err,results){
if(err) throw err;
res.render("accessories",{data:results});
});
});
app.get("/sales", function(req, res){
var q="select * from sales_details";
connection.query(q,function(err,results){
if(err) throw err;
res.render("sales",{data:results});
});
});
app.get("/customers", function(req, res){
var q="select * from customer";
connection.query(q,function(err,results){
if(err) throw err;
res.render("customer",{data:results});
});
});
app.get("/ani_add", function(req, res){
res.render("ani_add");
});
app.get("/animal_id_add", function(req, res){
res.render("animal_id_add");
});
app.post("/register_dogs",function(req,res){
var dog={pet_id:req.body.pet_id,
breed:req.body.breed,
weight:req.body.weight,
height:req.body.height,
age:req.body.age,
fur:req.body.fur};
var q="insert into animals set ?"
connection.query(q,dog,function(err,results){
if(err) throw err;
res.redirect("/animals");
});
});
app.post("/register_dogs_id",function(req,res){
var dog={pet_id:req.body.pet_id,
pet_category:req.body.pet_category,
cost:req.body.cost};
var q="insert into pets set ?"
connection.query(q,dog,function(err,results){
if(err) throw err;
res.redirect("/ani_add");
});
});
//route for delete data
app.post('/delete',(req, res) => {
let q = "DELETE FROM pets WHERE pet_id=?";
let dog={pet_id:req.body.pet_id};
connection.query(q,dog,function(err,results){
if(err) throw err;
res.redirect("/animals");
});
});
******** dogs_home.ejs *******
<html>
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400" rel="stylesheet">
<link rel="stylesheet" href="/app.css">
<body>
<table id="table" border="1%" width="99.5%"
style="background-color: rgba(169, 169, 169, 0.726)"
>
<thead>
<tr>
<th>pet id</th>
<th>Pet Category</th>
<th>Breed</th>
<th>Weight(Kgs)</th>
<th>Age(Yrs)</th>
<th>Height(Inchs)</th>
<th>Fur</th>
<th>cost</th>
</tr>
</thead>
<tbody>
<% data.forEach(function (user) { %>
<tr>
<td><%= user.pet_id %></td>
<td><%= user.pet_category %></td>
<td><%= user.breed %></td>
<td><%= user.weight %></td>
<td><%= user.age %></td>
<td><%= user.height %></td>
<td><%= user.fur %></td>
<td><%= user.cost %></td>
</tr>
<% }) %>
</tbody>
</table>
<div>
<a href="/animal_id_add"><button>Add new animal</button></a>
</div>
<div>
<form action="/delete" method="post">
<input type="text" class="form" name="pet_id" placeholder="Pet Id">
<button>DELETE</button>
</form>
</div>
</body>
</html>
******* animal_id_add.ejs *******
<html><body>
<div>
<form method="POST" action='/register_dogs_id'>
<input type="text" class="form" name="pet_id" placeholder="Pet Id">
<input type="text" class="form" name="pet_category" placeholder="pet_category">
<input type="text" class="form" name="cost" placeholder="cost">
<button type="submit">Add</button>
</form>
</div>
</body></html>
******* ani_add.ejs ********
<html>
<body>
<div>
<form method="POST" action='/register_dogs'>
<input type="text" class="form" name="pet_id" placeholder="Pet Id">
<input type="text" class="form" name="breed" placeholder="breed">
<input type="text" class="form" name="weight" placeholder="weight">
<input type="text" class="form" name="height" placeholder="height">
<input type="text" class="form" name="age" placeholder="age">
<input type="text" class="form" name="fur" placeholder="fur">
<button type="submit">Add</button>
</form>
</div>
</body>
</html>
解决方案
app.post('/delete',(req, res) => {
let q = "DELETE FROM pets WHERE pet_id=?";
let dog = [req.body.pet_id];
connection.query(q,dog,function(err,results){
if(err) throw err;
res.redirect("/animals");
});
你不需要提到 dog as json 理解和调试你的 sql 查询的一个好方法是在本地的 mysql 上逐字键入它们,?查询中使用的完全由 dog 变量值替换,并且只有将其作为字符串或 int 才有意义。
推荐阅读
- c# - C# Winforms:回答在进程中使用 cmd.exe 发出的命令的输出
- certificate - 当服务器有多个证书时,哪个证书有公钥?
- http - 测试 SIM 模块时出错
- google-cloud-platform - PermissionDenied:403 IAM 权限“dialogflow.intents.list”
- sql - 通过一些字符串操作,用另一个表中的数据更新一个表中的数据
- rxjs - rxjs - 主题订阅者错过了一个值
- javascript - 如何在 java 脚本中声明 div 和 id/class
- jquery - 当我单击该 div 内的 iframe 时如何获取该 div 的数据 ID
- javascript - 如何用 async/await 解决厄运金字塔?
- python - 如何在 Python 中比较两个 SQLlite 数据集并搜索相似之处?