simple_query()
è l'unico metodo di database in CodeIgniter che si comporta come hai sottolineato. Come afferma la documentazione:"La maggior parte degli utenti utilizzerà raramente questa funzione".
Con poche eccezioni, tutti gli altri metodi di Query Builder restituiscono un DB_query_builder
istanza a CI_DB_result
oggetto o, nel caso di query di tipo "scrittura", un booleano che indica l'esito positivo o negativo. Le poche eccezioni restituiscono un numero intero, una stringa o un misto (un valore o FALSE).
Tutti i metodi che accettano valori di input sfuggono (o facoltativamente non sfuggono) ai valori forniti.
Sebbene Query Builder (QB) sia un ottimo strumento, spesso non è necessario. Usando $this->db->query('your statement here');
è spesso più efficiente. Comprendere che l'obiettivo di QB è creare una stringa che venga letteralmente utilizzata in una chiamata a db->query('a query string');
.
Quindi, invece di scrivere tutto questo...
$this->db->select('id, name, email');
$this->db->from('customers');
$this->db->where('id', $id)
$this->db->where('active', $is_active)
$query = $this->get();
$result = $query->result();
La digitazione di quanto segue produce esattamente gli stessi risultati di cui sopra perché fornisce direttamente la stringa di query che QB ha creato nel codice precedente. (Anche la query è completamente sfuggita.) Ma esegue una tonnellata di codice in meno per arrivarci. (Con meno digitazione.)
$query = $this->db->query("Select id, name, email from customers where id = ? and active = ?", [$id, $is_active]);
$result = $query->result();
Questo è un esempio dell'utilizzo di Query Binding
Lo studio del codice sorgente principale (principalmente nei file "driver") ti mostrerà dove usare simple_query()
è appropriato e utile.