sql >> Database teknologi >  >> RDS >> Mysql

Hvordan kan jeg bruge forberedte erklæringer i CodeIgniter

CodeIgniter understøtter ikke forberedte erklæringer. Hvis du ser på kildekoden til CI's Database-klasse, vil du se, at de løser bindinger blot ved at erstatte spørgsmålstegnet med data fra det beståede array:

De understøtter kun forespørgselsbinding med unavngivne pladsholdere. Se http://ellislab.com/codeigniter/user-guide/database/ queries.html

Forespørgselsbindinger

Bindinger giver dig mulighed for at forenkle din forespørgselssyntaks ved at lade systemet sammensætte forespørgslerne for dig. Overvej følgende eksempel:

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

Spørgsmålstegnet i forespørgslen erstattes automatisk med værdierne i arrayet i den anden parameter i forespørgselsfunktionen.

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

Selvom CI ikke understøtter forberedte erklæringer, understøtter det forespørgselsbindinger. Med forberedte sætninger skal du kalde en eller anden type prepare() funktion og derefter en type execute() funktion. Med forespørgselsbindinger skal du kun kalde én funktion, og den gør stort set det samme. På grund af dette kan jeg bedre lide forespørgselsbindinger end forberedte udsagn.

På en sidenote ændrer du ? til :foo er blot ved at skifte fra unavngivne til navngivne bindinger (hvilket CI tilsyneladende heller ikke understøtter). Bare fordi du bruger enten eller, betyder det ikke, at du forbereder erklæringerne.



  1. Sådan krypteres en brugerdefineret funktion i SQL Server

  2. Spring, Hibernate, Blob doven loading

  3. Hvordan kontrollerer man, om en kolonne eksisterer, før man tilføjer den til en eksisterende tabel i PL/SQL?

  4. Er der en måde at deaktivere opdateringer/sletninger på, men stadig tillade triggere at udføre dem?