這個問題在這里已經有了答案: 如何在 MySQL 上進行 SQL 區分大小寫的字串比較? (12 個回答) 5 小時前關閉。
對不起,如果我的問題令人困惑。
為什么我查詢的時候
SELECT email FROM users WHERE email = '[email protected]' AND password = 'pass134';
我正在使用帶有 SQL 的 Node.js 服務器,當我使用時:
app.get('/login', function(req, res) {
var params = '?' req.url.split('?').pop(); // "[email protected]&pass=13456"
const pass = (new URLSearchParams(params).get('pass')); // "13456"
connection.query(`
SELECT email FROM users WHERE email = '${email}' AND password '${pass}';
`, function(err, result) {
if (err) throw err;
if (typeof result[0].email != "undefined") {
// User logged in successfully
} else {
// The email/password is incorrect
}
});
});
我嘗試去https?://www.example.com/[email protected]&pass=Pass13456,它登錄。
但是當密碼是小寫或大寫時,它仍然登錄。
我認為這是WHERE查詢不夠具體。
如何使用 WHERE 作為特定值使 SQL 選擇值?
(例如,WHERE str = 'only equal to this string, not lowercase or uppercase';)
uj5u.com熱心網友回復:
因此,mysql 中的 where 子句不區分大小寫。要修復它,您可以從查詢中回傳密碼,將其作為變數保存在節點中,然后進行比較(一種解決方案)
或者您可以使用二進制比較。我仍然需要對此進行測驗,但我相信您只需將“BINARY”關鍵字添加到您的查詢中即可。所以喜歡
SELECT email FROM users WHERE email = '[email protected]' AND BINARY password = 'pass134';
我在手機上寫這個,所以我不知道這是否是最好的,我仍然需要測驗二進制解決方案
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/349927.html
標籤:javascript mysql sql 节点.js
