簡體   English   中英

錯誤:ER_EMPTY_QUERY:查詢在 node.js 和 mySQL 中為空

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM