sql >> Databasteknik >  >> RDS >> Mysql

SQL-frågor som binder variabler kontra att specificera dem

Även om du kan ha din fråga helt säker utan bindning (genom att formatera alla variabler manuellt), är det verkligen det enda rätta sättet att använda förberedda satser för att representera dina data i frågan.

Vikten av att använda förberedda uttalanden missbedöms ofta, så jag skulle vilja klargöra de verkliga fördelarna:

  • förberedd sats gör korrekt formatering (eller hantering) oundviklig .
  • förberedda uttalanden gör korrekt formatering (eller hantering) på den enda rätta platsen - precis innan frågan körs, inte någon annanstans, så vår säkerhet kommer inte att förlita sig på sådana opålitliga källor som
    • någon PHP "magisk" funktion som snarare förstör data än att göra den säker.
    • den goda viljan hos en (eller flera) programmerare, som kan bestämma sig för att formatera (eller inte formatera) vår variabel någonstans i programflödet. Det är poängen av stor betydelse.
  • förberedd sats påverkar själva värdet som kommer in i frågan, men inte källvariabeln, som förblir intakt och kan användas i den ytterligare koden (som ska skickas via e-post eller visas på skärmen).
  • Förberedda uttalanden kan göra applikationskoden dramatiskt kortare, genom att göra all formatering bakom kulisserna (*endast om föraren tillåter).


  1. Sök i alla kolumner i en tabell med ett enda where-villkor med ett enda nyckelord i mysql

  2. Kan inte ansluta till databasserver (mysql workbench)

  3. Hur får man veckodagens namn från ett datum?

  4. Hur man använder Distributed AD för att minska patchtiden i Oracle EBS