我有一个使用 CodeIgniter 框架的网站,几乎在每个请求中都使用 CodeIgniter 的预格式化查询类来处理我前同事构建的数据库中的数据。
其中一个例子是这样的:
function tampilkan_data(){
$this->db->select('barang.*,barang_keluar.*,barang_masuk.*');
$this->db->from('barang');
$this->db->join('barang_keluar', 'barang.id_barang=barang_keluar.id_barang','left');
$this->db->join('barang_masuk', 'barang.id_barang=barang_masuk.id_barang','left');
$this->db->order_by('barang.id_barang','asc');
$this->db->order_by('barang.kode_barang','asc');
$this->db->where('barang.status','0');
return $query = $this->db->get()->result();
}
我想更改该查询的结果,但为了首先理解它,我必须将其转换为原始的 MySQL 查询。试图这样做:
SELECT `barang`.*, `barang_keluar`.*, `barang_masuk`.*
FROM `barang` AS A
LEFT JOIN `barang_keluar` AS B ON A.id_barang = B.id_barang
LEFT JOIN `barang_masuk` AS C ON A.id_barang = C.id_barang
ORDER BY A.id_barang ASC, A.kode_barang ASC
WHERE A.status = 0
但是我得到了这个错误
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE A.status = 0 LIMIT 0, 25' at line 6
我试图删除 WHERE A.status = 0
看看我的代码哪里出了问题,我得到了这个错误
1051 - Unknown table 'barang'
我认为问题出在 SELECT barang.*, barang_keluar.*, barang_masuk.*
行, 因为我真的不知道如何用 MySQL 原始格式编写它。
我已经搜索过这个主题,我什至尝试将查询直接写到搜索栏,但我没有找到适合我的情况的正确方法。 希望有人能帮忙
最佳答案
您可以简单地打印您的查询,然后您可以看到原始 sql 格式的查询。
function tampilkan_data(){
$this->db->select('barang.*,barang_keluar.*,barang_masuk.*');
$this->db->from('barang');
$this->db->join('barang_keluar', 'barang.id_barang=barang_keluar.id_barang','left');
$this->db->join('barang_masuk', 'barang.id_barang=barang_masuk.id_barang','left');
$this->db->order_by('barang.id_barang','asc');
$this->db->order_by('barang.kode_barang','asc');
$this->db->where('barang.status','0');
$query = $this->db->get()->result(); // notice that i have removed the return keyword
echo $this->db->last_query(); // This will print your query directly on the screen.
}
但是您收到的错误是 -> 您没有名为 barang 的表。 确保该表存在。
希望对你有帮助...
关于php - 如何将 Codeigniter 预格式化查询转换为原始 Mysql 查询(例如 $this->db->select ('table1.*,table2.*,table3.*' )),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57702792/