Codeigniter: $this->db->dernière requête(); exécuter une requête?

est-ce que l'exécution de la requête se produit à la clause get_where() de l'instruction codeigniter active record 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 le result_array() ?

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

32
demandé sur surfer190 2013-04-11 20:13:50

1 réponses

l'exécution de la requête se produit sur toutes les méthodes get comme

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

alors que last_query contient la dernière requête qui a été exécutée

$this->db->last_query();

Si vous voulez obtenir de la chaîne de requête sans exécution, vous devrez le faire. Allez à system/database / DB_active_rec.php supprimer le mot-clé public ou protégé de ces fonctions

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

Maintenant vous pouvez écrire 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();

réinitialisation de la requête, donc si vous voulez écrire une autre requête, l'objet sera effacé.

$this->db->_reset_select();

Et la chose est faite. Acclamations!!! Remarque : lors de l'utilisation de cette façon, vous devez utiliser

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

au lieu de

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

qui exécute la requête.

regardez cet exemple

73
répondu Muhammad Raheel 2017-05-23 12:34:22