sql >> Database teknologi >  >> RDS >> Mysql

Hvordan anvender man en funktion på en værdi af en where-sætning ved hjælp af Knex?

Du skal sandsynligvis bruge whereRaw()

knex('usr_info')
  .whereRaw('login = ? AND password = PASSWORD(?)', [login, password]);

I øvrigt bør du ikke bruge MySQL's PASSWORD()-funktion til din egen app-godkendelse. Denne funktion blev fjernet i MySQL 8.0.11. I MySQL 5.7 er det forældet, og der er en note:

https://dev.mysql.com/doc /refman/5.7/da/encryption-functions.html#function_password

Desuden er det ikke en god ide at videregive plaintext-adgangskoden til din forespørgsel, fordi den kan være logget på plaintext i forespørgselsloggen.

I stedet anbefaler jeg, at du kun søger efter login i din forespørgsel, vil resultatet inkludere den hash-kodede adgangskode, der er gemt i din database. Du kan hash kodeordet i din app-kode og sammenligne det med hash, der returneres af din forespørgsel.




  1. 7645 Nul eller tomt fuldtekstprædikat

  2. hvordan vælger jeg AVG af flere kolonner på en enkelt række

  3. stop ved kompileringsfejl i et sqlplus-script

  4. Sådan formateres tal i SQL Server