web-dev-qa-db-fra.com

Codeigniter: fait $ this-> db-> last_query (); exécuter une requête?

L'exécution de la requête a-t-elle lieu à la clause get_where() de l'instruction d'enregistrement active codeigniter suivante?

$this->db->select('*');
    $q = $this->db->get_where('Contacts', array('id' => $contact_id));

    $sql = $this->db->last_query();

Ou cela se produit-il une fois que vous appelez la result_array()?

Et $this->db->last_query(); est un moyen fiable d'obtenir la chaîne de requête.

40
James Bond

L'exécution de la requête se produit sur toutes les méthodes get telles que

$this->db->get('table_name');
$this->db->get_where('table_name',$array);

While last_query contient la dernière requête exécutée

$this->db->last_query();

Si vous voulez obtenir une chaîne de requête sans exécution, vous devrez le faire. Aller à system/database/DB_active_rec.php Supprimer les mots clés publics ou protégés de ces fonctions

public function _compile_select($select_override = FALSE)
public function _reset_select()

Maintenant, vous pouvez écrire une requête et l'obtenir dans une variable

$this->db->select('trans_id');
$this->db->from('myTable');
$this->db->where('code','B');
$subQuery = $this->db->_compile_select();

Maintenant, réinitialisez la requête pour que l'objet soit effacé si vous souhaitez écrire une autre requête.

$this->db->_reset_select();

Et la chose est faite. À votre santé!!! Remarque: lorsque vous utilisez cette méthode, vous devez utiliser

$this->db->from('myTable')

au lieu de

$this->db->get('myTable')

qui exécute la requête.

Regardez cet exemple

82
Muhammad Raheel