Actualmente estoy trabajando con JS, DiscordJS y MySQL y trato de obtener algunos datos de la tabla que generalmente siempre funcionó bien. Pero estoy luchando con una consulta MySQL SELECT porque no verifica si el valor en la tabla es exactamente el mismo que está buscando. El final de la ID de Discord es diferente al que está buscando.
Código:
let query = `SELECT * FROM accounts WHERE DiscordID = ${interaction.member.id}`; console.log(`QUERY: ` + query); MySQL.Connect() .then((connection) => { MySQL.Query(connection, query) .then((results) => { if (results == '') { console.log('[RESULTS = 0]'); console.log(results); } else { console.log('[RESULTS > 0]'); console.log(results); } }) .catch((error) => { console.log(error); }) .finally(() => { connection.end(); }); }) .catch((error) => { console.log(error); });Resultado:
QUERY: SELECT * FROM accounts WHERE DiscordID = 466934561738326016 RESULT: ID: 1, Username: 'Test', Password: 'Test', DiscordID: '466934561738326022'esquema MySQL:
CREATE TABLE IF NOT EXISTS `accounts` ( `ID` INT NOT NULL AUTO_INCREMENT, `Username` VARCHAR(255) NOT NULL, `Password` VARCHAR(255) NOT NULL, `DiscordID` VARCHAR(100) NOT NULL, PRIMARY KEY (`ID`));Fuiste mordido por el manejo de números de MySQL.
Usted dijo,
SELECT * FROM accounts WHERE DiscordID = 466934561738326016 MySQL tomó ese número largo y lo convirtió silenciosamente en un número de coma flotante de 64 bits IEEE 754 , perdiendo precisión. Haciendo SELECT 466934561738326016; te llega 466934561738326000 . Eso coincide con el DiscordID incorrecto, a veces. !!
Si coloca comillas alrededor de la ID, al hacer esto, MySQL deja el valor de la ID intacto como una cadena de texto. Funciona.
SELECT * FROM accounts WHERE DiscordID = '466934561738326016'Compruébalo aquí. violín