检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 1 行的 '' 附近使用如何修复 [关闭]
Posted
技术标签:
【中文标题】检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 1 行的 \'\' 附近使用如何修复 [关闭]【英文标题】:check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 how to fix [closed]检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 1 行的 '' 附近使用如何修复 [关闭] 【发布时间】:2021-01-26 12:24:30 【问题描述】:我正在编写一个不和谐的机器人,并且我正在尝试获取 mysql,以便我可以保留有关玩家的数据。当我尝试将 MySQL 连接到 discord.js 和 node.js 时,它说:
ER_PARSE_ERROR:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '' 附近使用正确的语法
我不知道这意味着什么,所以如果有人知道如何解决这个问题,谢谢。
这是我的代码:
const Discord = require('discord.js');
const mysql = require('mysql');
const client = new Discord.Client();
const prefix = "p ";
client.once('ready', () =>
console.log('pog is online! Pogchamp')
)
var con = mysql.createConnection(
host: "127.0.0.1",
socketPath: "/Applications/MAMP/tmp/mysql/mysql.sock",
user: "root",
password: "1234",
database: "PogBot"
);
con.connect(function(err)
if (err)
console.log("ERROR: " + err.message);
return;
console.log("Connected!");
);
/*shop*/
const shop = new Discord.MessageEmbed()
.setColor('#00FF00')
.setTitle('Shop')
.setDescription('Pog Shop')
.addFields(
name: '\u200B', value: '\u200B' ,
name: 'How to buy', value: 'use "pogs buy (itemName)"to buy an item' ,
name: 'Laptop :computer:', value: '1000 Coins', inline: true ,
name: 'Phone :mobile_phone:', value: '400 Coins', inline: true ,
name: 'Mouse :mouse_three_button:', value: '100 Coins', inline: true ,
)
client.on('message', message =>
if(message.author.bot)
return;
if(message.content.startsWith(prefix + "id"))
message.author.send('your id: ' + message.author.id);
if(message.content.startsWith(prefix + 'me'))
sql = "SELECT * FROM users WHERE user_id = " + message.author.id;
con.query(sql, function (err, result)
try
if (err)
throw new exception(err.message);
if (result.length > 1)
throw new exception("select user_id=" + message.author.id + " got (result.length) records");
if (result.length == 0)
console.log("Not user");
return;
message.channel.send("Tag: " + result[0].tag + "\nCoins: " + result[0].pog_coins);
catch( exception )
// WRITE TO FILE -> ... exception.message
console.log("Something went wrong. Error #" + exception.line);
);
if(message.content.startsWith(prefix + "create"))
sql = "SELECT * FROM users WHERE user_id = " + message.author.id;
con.query(sql, function (err, result)
if (err)
console.log(err.message);
if (result.length > 1)
message.channel.send("Account already created:");
message.channel.send("Tag: " + result[0].tag + "\nCoins: " + result[0].pog_coins);
return;
sql = "INSERT INTO users(user_id, tag, pog_coins)VALUES(" + message.author.id + ", " + message.author.tag + ", 0)";
con.query(sql, function (err , result)
if (err)
console.log(err.message);
message.channel.send("Account Created!");
);
);
if(message.content.startsWith(prefix + "shop"))
message.channel.send(shop);
/*if(message.content.startsWith('pog'))
message.channel.send('champ')
if(message.content.startsWith('champ'))
message.channel.send('pog')*/
)
【问题讨论】:
您的message.author.tag
中可能包含非字母数字字符。
【参考方案1】:
了解实际查询会有所帮助,这应该是错误消息的一部分。
我认为问题出在
sql = "INSERT INTO users(user_id, tag, pog_coins)VALUES(" + message.author.id + ", " + message.author.tag + ", 0)";
尤其是:
+ message.author.tag +
我假设标签是文本,而不是数字,所以它必须是引号,例如
+ ", '" + message.author.tag + "', 0)"
^ ^
但是现在可能发生的下一件事是 SQL 注入,因此您应该考虑为此使用准备好的语句,而不是仅使用字符串连接来构造查询字符串。
【讨论】:
天哪,非常感谢,你是最棒的!以上是关于检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 1 行的 '' 附近使用如何修复 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法使用
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法解决方案:
Symfony2 抛出学说异常“检查与您的 MySQL 服务器版本相对应的手册,以获取在 'group' 附近使用的正确语法”
MySQL - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法 - phpMyAdmin