Saya memiliki pernyataan sql dalam model saya,
Saya kemudian berkata
$query = $this->db->query($sql, array(fields, fields1);
if ($query) {
return true:
} else {
echo "failed";
return false;
}
Permintaan saya selalu gagal, bagaimana cara mendapatkan php untuk mencetak pernyataan sql yang tepat yang dikirim ke database saya? Dan tampilkan itu di tampilan php saya, halaman
php
sql
codeigniter
Technupe
sumber
sumber
Anda dapat menggunakan ini:
"Mengembalikan kueri terakhir yang dijalankan (string kueri, bukan hasil)."
Reff: https://www.codeigniter.com/userguide3/database/helpers.html
sumber
Anda dapat menampilkan SQL yang dihasilkan ActiveRecord:
Sebelum kueri dijalankan:
Dan setelah itu berjalan:
sumber
$this->db->get_compiled_select()
sebagai gantinya.jika Anda memerlukan pengujian cepat atas kueri Anda, ini sangat cocok untuk saya
sumber
Setelah mencoba tanpa hasil untuk menggunakan
_compiled_select()
atauget_compiled_select()
saya baru saja mencetakdb
objek, dan Anda dapat melihat kueri di sanaqueries
properti.Cobalah sendiri:
Jika Anda tahu Anda hanya memiliki satu kueri, Anda dapat mencetaknya secara langsung:
sumber
Ada metode publik baru
get_compiled_select
yang dapat mencetak kueri sebelum menjalankannya._compile_select
sekarang dilindungi oleh karena itu tidak dapat digunakan.sumber
Anda cukup menggunakan ini di akhir ..
sumber
Tidak ada
last_query()
atau tidakget_compiled_select()
berfungsi untuk saya, jadi sedikit perubahan kode pedro berhasil untuk saya. Jangan sertakan->get()
dalam build Anda, ini harus sebelum -> get ()sumber
Saya mencoba untuk jawaban @ Chumillas dan jawaban @ chhameed, tetapi tidak berhasil, karena sql-nya salah, jadi saya menemukan pendekatan baru, seperti ini:
echo $sql; flush(); exit;
ke dalamreturn $sql;
_compile_select
fungsi sebelumDB_active_rec.php
sumber
Tambahkan baris ini tepat setelah kueri yang ingin Anda cetak.
Contoh:
$ query = $ this-> db-> query ('SELECT * FROM table WHERE condition');
// Tambahkan baris ini.
var_dump ($ this-> db-> last_query ());
keluar();
atau
echo $ this-> db-> last_query ();
sumber
Saya menggunakan xdebug untuk melihat nilai-nilai ini di VSCode dengan ekstensi masing-masing dan CI v2.x. Saya menambahkan ekspresi
$this->db->last_query()
di bagian arloji, dan saya menambahkanxdebugSettings
simpul seperti baris ini untuk mendapatkan nilai non-pemotongan di launch.json.Dan jalankan debuger saya dengan breakpoint dan terakhir pilih ekspresi saya dan klik kanan> salin nilai.
sumber
Saya memiliki masalah yang persis sama dan akhirnya menemukan solusinya. Kueri saya berjalan seperti:
Untuk menampilkan perintah sql, yang harus saya lakukan adalah membuat variabel ($ resultstring) dengan konten yang sama persis dengan kueri saya dan kemudian menggemakannya, seperti ini:
<?php echo $resultstring = 'SELECT * FROM clients WHERE ' . $sql_where . ' AND ' . $sql_where2 . ' ORDER BY acconame ASC '; ?>
Berhasil!
sumber
gunakan
get_compiled_select()
untuk mengambil kueri alih-alih menggantinyasumber
Saya membaca semua jawaban di sini, tetapi tidak bisa
bekerja, Ini memberi saya kesalahan seperti,
Jadi saya menghapus
protected
dari baris di bawah ini dari file\system\database\DB_active_rec.php
dan berhasilsumber