[英]Error: ER_EMPTY_QUERY: Query was empty in node.js with mySQL
我正在處理一個以 node.js 和 MySQL 作為數據庫的登錄表單。 當我運行程序並嘗試注冊新用戶時,我在按提交時收到此錯誤。
當我按下提交時,我在 chrome 的檢查頁面的控制台中收到以下錯誤:錯誤,我在 vs 代碼中的終端中收到以下錯誤:
node:internal/process/promises:288 triggerUncaughtException(err, true /* fromPromise */); ^ 錯誤:ER_EMPTY_QUERY:查詢在 Sequence._packetToError (D:\programmeer stuff\javascript\informatica site\New folder\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14) 在 Query.ErrorPacket ( D:\programmeer stuff\javascript\informatica site\New folder\node_modules\mysql\lib\protocol\sequences\Query.js:79:18) 在 Protocol._parsePacket (D:\programmeer stuff\javascript\informatica site\New folder \node_modules\mysql\lib\protocol\Protocol.js:291:23) 在 Parser._parsePacket (D:\programmeer stuff\javascript\informatica site\New folder\node_modules\mysql\lib\protocol\Parser.js:433: 10) 在 Parser.write (D:\programmeer stuff\javascript\informatica site\New folder\node_modules\mysql\lib\protocol\Parser.js:43:10) 在 Protocol.write (D:\programmeer stuff\javascript\ informatica site\New folder\node_modules\mysql\lib\protocol\Protocol.js:38:16) 在套接字處。 (D:\programmeer stuff\javascript\informatica site\New folder\node_modules\mysql\lib\Connection.js:88:28) 在套接字處。 (D:\programmeer stuff\javascript\informatica site\New folder\node_modules\mysql\lib\Connection.js:526:10) 在 Socket.emit (node:events:513:28) 在 addChunk (node:internal/streams) /readable:324:12) ------------------ 在 Protocol._enqueue (D:\programmeer stuff\javascript\informatica site\New folder\node_modules\mysql\ lib\protocol\Protocol.js:144:48) 在 Connection.query (D:\programmeer stuff\javascript\informatica site\New folder\node_modules\mysql\lib\Connection.js:198:25) 在寄存器 (D: \programmeer stuff\javascript\informatica site\New folder\controllers\register.js:9:12) at Layer.handle [as handle_request] (D:\programmeer stuff\javascript\informatica site\New folder\node_modules\express\lib \router\layer.js:95:5) at next (D:\programmeer stuff\javascript\informatica site\New folder\node_modules\express\lib\router\route.js:144:13) at Route.dispatch (D :\programmeer stuff\javascript\informatica site\New folder\node_modules\express\lib\router\route.js:114:3) 在 Layer.handle [as handle_reques t] (D:\programmeer stuff\javascript\informatica site\New folder\node_modules\express\lib\router\layer.js:95:5) 在 D:\programmeer stuff\javascript\informatica site\New folder\node_modules\ express\lib\router\index.js:284:15 at Function.process_params (D:\programmeer stuff\javascript\informatica site\New folder\node_modules\express\lib\router\index.js:346:12) at next (D:\programmeer stuff\javascript\informatica site\New folder\node_modules\express\lib\router\index.js:280:10) { code: 'ER_EMPTY_QUERY', errno: 1065, sqlMessage: '查詢為空', sqlState: '42000', 索引: 0, sql: 未定義}
我嘗試運行的代碼是:
controllers/register.js
const db = require("../routes/db-config");
const bcrypt =require("bcryptjs")
const register = async (req, res) => {
const {email, password: Npassword} = req.body
if(!email || !Npassword) return res.json({satus:'error', error:"Please enter your email and password"});
else{
console.log(email);
db.query('SELECT email FROM users WHERE email = ?' [email], async(err, result) => {
if(err) throw err;
if(result[0])return res.json({satus:'error', error:"email already in use"})
else {
const password = bcrypt.hash(Npassword, 8);
console.log(password)
db.query('INSERT INTO users SET ?', {email: email, password: password}, (error, results)=>{
if (error) throw error;
return res.json({ satus:"success", success:"account registred succesfully" })
})
}
})
}
}
module.exports = register;
我認為db.query('INSERT INTO users SET?', {email: email, password: password}, (error, results)=>
或db.query('SELECT email FROM users WHERE email =?' [email], async(err, result) =>
與錯誤相似
js/register.js
這里是根據chrome中的inspect page報錯的
form.addEventListener("submit", () => {
const register = {
email: email.value,
password: password.value
}
fetch("/api/register", {
method: "POST",
body: JSON.stringify(register),
headers: {
"Content-Type":"application/json"
}
}).then(res => res.json())
.then(data => {
if(data.status == "errpr") {
success.style.display = "none"
error.style.display = "block"
error.innerText = data.error
} else {
error.style.display = "none"
success.style.display = "block"
success.innerText = data.success
}
})
})
routes/db-config
const sql = require("mysql");
const dotenv = require("dotenv").config();
const db = sql.createConnection({
host:process.env.DATABASE_HOST,
user:process.env.DATABASE_USER,
password:process.env.DATABASE_PASSWORD,
database:process.env.DATABASE
})
module.exports = db;
如果需要更多代碼來幫助我解決這個問題,請告訴我!!
在這一行
db.query('SELECT email FROM users WHERE email = ?' [email], async(err, result) => {
你應該在查詢字符串和它應該是的列表之間加上逗號“,”
db.query('SELECT email FROM users WHERE email = ?', [email], async(err, result) => {
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.