sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag använda förberedda uttalanden i CodeIgniter

CodeIgniter stöder inte förberedda uttalanden. Om du tittar på källkoden för CI:s databasklass kommer du att se att de löser bindningar helt enkelt genom att ersätta frågetecknen med data från den godkända arrayen:

De stöder endast frågebindning med namnlösa platshållare. Se http://ellislab.com/codeigniter/user-guide/database/ queries.html

Frågebindningar

Bindningar gör att du kan förenkla din frågesyntax genom att låta systemet sätta samman frågorna åt dig. Tänk på följande exempel:

$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->db->query($sql, array(3, 'live', 'Rick'));

Frågetecknen i frågan ersätts automatiskt med värdena i arrayen i den andra parametern i frågefunktionen.

och http://ellislab.com/forums/viewthread/105112/#528915

Även om CI inte stöder förberedda uttalanden, stöder det frågebindningar. Med preparerade satser måste du anropa någon typ av prepare() funktion och sedan någon typ av execute() funktion. Med frågebindningar behöver du bara anropa en funktion och den gör i princip samma sak. På grund av detta gillar jag frågebindningar bättre än förberedda uttalanden.

På en sida ändrar du ? till :foo byter bara från namnlösa till namngivna bindningar (vilket CI tydligen inte heller stöder). Bara för att du använder antingen eller betyder det inte att du förbereder påståendena.



  1. Använd variabel med TOP i select-satsen i SQL Server utan att göra den dynamisk

  2. SQL Server Query timeout beroende på Where Clause

  3. Hur rengör (förhindrar SQL-injektion) dynamisk SQL i SQL Server?

  4. Hur man återställer en databas med Backup Manager