simple_query()
je jedinou databázovou metodou v CodeIgniter, která se chová tak, jak jste poukázali. Jak uvádí dokumentace:"Většina uživatelů tuto funkci využije jen zřídka."
Až na několik výjimek všechny ostatní metody Query Builder vracejí buď DB_query_builder
instance CI_DB_result
objekt nebo - v případě dotazů typu "write" - booleovský, který označuje úspěch nebo neúspěch. Několik výjimek vrací celé číslo, řetězec nebo smíšené (hodnota nebo FALSE).
Všechny metody, které přijímají vstupní hodnoty, unikají (nebo volitelně neescapují) zadané hodnoty.
I když je Query Builder (QB) skvělý nástroj, často to není nutné. Pomocí $this->db->query('your statement here');
je často efektivnější. Pochopte, že cílem QB je vytvořit řetězec, který se doslova používá při volání db->query('a query string');
.
Takže místo psaní tohoto všeho...
$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();
Zadáním následujícího dosáhnete přesně stejných výsledků jako výše, protože přímo poskytuje řetězec dotazu, který QB zabudoval do výše uvedeného kódu. (Dotaz je také plně escapován.) Ale vykoná o tuny méně kódu, aby se tam dostal. (S méně psaním.)
$query = $this->db->query("Select id, name, email from customers where id = ? and active = ?", [$id, $is_active]);
$result = $query->result();
Toto je příklad použití Vazba dotazu
Studium základního zdrojového kódu (většinou v souborech 'ovladače') vám ukáže, kde pomocí simple_query()
je vhodné a užitečné.