sql >> Databasteknik >  >> RDS >> Mysql

Användning av parametrar för mysql_query

För det första, vad det här handlar om kallas SQL-injektion . Det är i princip bara möjligheten att ändra frågor mot databasen via användarinmatning.

Låt oss titta på ett exempel:

Fråga:

SELECT temp1 FROM temp WHERE temp2 = 'VAR1';

Nu kommer vi att tilldela VAR1 värdet av:'; DROP TABLE *; -- Och vi får:

SELECT temp1 FROM temp WHERE temp2 = ''; DROP TABLE *; --';

Med mysql_real_escape_string det skulle se ut så här:

SELECT temp1 FROM temp WHERE temp2 = '\'; DROP TABLE *; --'

mysql_real_escape_string "säkrar" en sträng för användning i en fråga.

Men i slutändan bör du sluta använda mysql_* totalt . De är utfasade och anses vara osäkra när det gäller att förhindra SQL-injektion eller andra sätt att mildra frågorna.

Du borde helt enkelt sluta sammanfoga frågor så här och börja använda förberedda uttalanden , som inte bara är enklare att använda, förhindrar SQL-injektion som standard utan kan också förbättra din applikations hastighet.

För PHP finns det två tillägg som är designade för att stänga hela mysql_* öppnad:

Och jag säger det igen:Snälla sluta använda mysql_* !



  1. Använder JQuery för att infoga värden i mySQL

  2. När du använder GETDATE() på många ställen, är det bättre att använda en variabel?

  3. php mysql teckenuppsättning:lagra html av internationellt innehåll

  4. Hur man lagrar återkommande datum med tanke på sommartid