web-dev-qa-db-de.com

Echoabfrage vor der Ausführung und ohne Ausführung im Codeigniter Active Record

Ich suche nach einer Möglichkeit, die generierte Zeichenfolge der Abfrage zu sehen, aber , ohne dass sie ausführt.

Beachten Sie, dass die Abfrage noch nicht ausgeführt wurde. (Ich möchte nicht $this->db->last_query();)

Ich hoffe, dass es eine Methode mit einem Namen wie $this->db->echo_query_string($table_name = ''); gibt, die verwendet werden soll genau wie$this->db->get($table_name = '');, ABER DER EINZIGE UNTERSCHIED IST, dassget() den Code ausführt, aber echo_query_string() gibt nur die Zeichenfolge der Abfrage ohne Ausführung wieder. .

22
Mohammad Naji

Sie können die kompilierte Abfrage mit einer dieser Funktionen anzeigen

/* SELECT */ $this->db->_compile_select();
/* INSERT */ $this->db->_insert();
/* UPDATE */ $this->db->_update();
25
Stewie

Sie müssen keine Datei in Codeigniter ändern, da dies bereits eine Methode darstellt.

Verwenden

echo $this->db->last_query();

wird herstellen

select * from some_table...

Und das ist es.

19
BrCoder08

Ich habe diese kleine Methode in DB_active_rec.php hinzugefügt

function return_query()
{
    return $this->_compile_select();
}

Verwendungszweck 

$this->db->select('id,user_name')->from('user')->where('id',1);

$string =   $this->db->return_query();
echo $string;

Ergebnis

SELECT `id`, `user_name` FROM (`user`) WHERE `id` = 1

Auf diese Weise sind Sie verpflichtet zu verwenden 

$this->db->from()

Anstatt 

$this->db->get()

Welches führt die Abfrage aus

10
Muhammad Raheel

Ab Version 3 von Codeigniter beziehen Sie sich bitte auf this url und auch auf this .

  • echo $this->db->update_string(); OR echo $this->db->get_compiled_update();
  • echo $this->db->insert_string(); OR $this->db->get_compiled_insert();
  • echo $this->db->get_compiled_delete();
  • echo $this->db->get_compiled_select();
3
Amitabh Das

Sie können einige public-Methoden verwenden, um SQL-Abfragen abzurufen

Holen Sie sich eine SELECT-Abfrage

$sql = $this->db->get_compiled_select()

Holen Sie sich eine INSERT-Abfrage

$sql = $this->db->get_compiled_insert()

Holen Sie sich eine UPDATE-Abfrage

$sql = $this->db->get_compiled_update()

Holen Sie sich eine DELETE-Abfrage

$sql = $this->db->get_compiled_delete()
0
jedema