sql >> Databasteknik >  >> RDS >> Mysql

Hur är insidan av ett förberett uttalande?

Om du försöker göra vad det låter som att du försöker göra... försök inte göra det.

Det är inte vad ett förberett uttalande är (eller det är åtminstone inte vad det borde vara).

Din klientkod ska inte försöka interpolera värden i frågesträngen för att generera en "färdig" fråga att skicka till servern för exekvering. Det är ett recept på katastrof, för att inte tala om en falsk känsla av säkerhet.

Förberedda satser levererar satsen med ? platshållare till servern som den är, där servern "förbereder" satsen för exekvering... och sedan skickar klienten parametrarna till servern ("binder" parametrarna) för exekvering. Om du gör detta kommer servern aldrig att förväxlas med "vilken del är SQL" och "vilken del är data", vilket gör sql-injektion omöjlig och gör det onödigt att fly och sanera data.

Om du inte kommunicerar direkt med C-API bör du anropa metoderna i ditt bibliotek som exponerar samma funktioner för dig.




  1. Motsvarar Oracles externa tabeller i SQL Server

  2. Postgres Vänster Gå med där skick

  3. Hur får man skillnaden mellan två rader för ett kolumnfält?

  4. Hur man listar tabeller som påverkas av kaskadradering