simple_query()
é o único método de banco de dados no CodeIgniter que se comporta como você apontou. Como a documentação afirma:"A maioria dos usuários raramente usará esta função." Com algumas exceções, todos os outros métodos do Query Builder retornam um
DB_query_builder
instância um CI_DB_result
object ou - no caso de consultas do tipo "write" - um booleano que indica sucesso ou falha. As poucas exceções retornam um inteiro, string ou misto (um valor ou FALSE). Todos os métodos que aceitam valores de entrada escapam (ou opcionalmente não escapam) os valores fornecidos.
Embora o Query Builder (QB) seja uma ótima ferramenta, muitas vezes não é necessário. Usando
$this->db->query('your statement here');
é frequentemente mais eficiente. Entenda que o objetivo do QB é criar uma string que é literalmente usada em uma chamada para db->query('a query string');
. Então, em vez de digitar tudo isso...
$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();
Digitar o seguinte produz exatamente os mesmos resultados acima porque fornece diretamente a string de consulta que QB criou no código acima. (A consulta também é totalmente escapada.) Mas executa muito menos código para chegar lá. (Com menos digitação.)
$query = $this->db->query("Select id, name, email from customers where id = ? and active = ?", [$id, $is_active]);
$result = $query->result();
Este é um exemplo de uso da Associação de consulta
Estudar o código-fonte principal (principalmente em arquivos 'driver') mostrará onde usar
simple_query()
é apropriado e útil.