sql >> Database >  >> RDS >> Mysql

Hoe een functie toepassen op een waarde van een waar-clausule met behulp van Knex?

U moet waarschijnlijk whereRaw() gebruiken

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

Trouwens, je moet de PASSWORD()-functie van MySQL niet gebruiken voor je eigen app-authenticatie. Deze functie is verwijderd in MySQL 8.0.11. In MySQL 5.7 is het verouderd, en er is een opmerking:

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

Bovendien is het geen goed idee om het wachtwoord in leesbare tekst aan uw zoekopdracht door te geven, omdat het in leesbare tekst in het zoeklogboek kan worden vastgelegd.

In plaats daarvan raad ik u aan alleen te zoeken naar login in uw zoekopdracht, dan bevat het resultaat het gehashte wachtwoord dat in uw database is opgeslagen. U kunt het wachtwoord in uw app-code hashen en het vergelijken met de hash die door uw zoekopdracht is geretourneerd.




  1. PostgreSQL 9.1:Hoe rijen in een array samen te voegen zonder duplicaten, JOIN in een andere tabel

  2. 5 trucs voor het garanderen van piekprestaties van SQL Server

  3. Hoe tabellen vooraf in de INNODB-bufferpool te laden met MySQL?

  4. Afbeelding naar de MySQL-database verzenden met Android