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

Come posso utilizzare le istruzioni preparate in CodeIgniter

CodeIgniter non supporta le istruzioni preparate. Se guardi il codice sorgente per la classe Database di CI, vedrai che risolvono i collegamenti semplicemente sostituendo i punti interrogativi con i dati dell'array passato:

Supportano solo l'associazione di query con segnaposto senza nome. Vedi http://ellislab.com/codeigniter/user-guide/database/ query.html

Associazioni di query

Le associazioni ti consentono di semplificare la sintassi delle query consentendo al sistema di assemblare le query per te. Considera il seguente esempio:

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

I punti interrogativi nella query vengono automaticamente sostituiti con i valori nell'array nel secondo parametro della funzione di query.

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

Anche se CI non supporta le istruzioni preparate, supporta le associazioni di query. Con le istruzioni preparate devi chiamare un tipo di funzione prepare() e quindi un tipo di funzione execute(). Con le associazioni di query, devi solo chiamare una funzione e sostanzialmente fa la stessa cosa. Per questo motivo, mi piacciono i binding di query meglio delle istruzioni preparate.

In una nota a margine, cambiare ? a :foo sta semplicemente cambiando da binding senza nome a binding con nome (che apparentemente non supporta neanche CI). Solo perché usi o non significa che stai preparando le dichiarazioni.