如何将Codeigniter预格式化查询转换为原始Mysql查询(例如$ this-> db-> select('table1。*,table2。*,table3。*')) [英] How to Translate Codeigniter Pre Formatted Query Into an Original Mysql Query (e.g $this->db->select('table1.*,table2.*,table3.*'))

查看:87
本文介绍了如何将Codeigniter预格式化查询转换为原始Mysql查询(例如$ this-> db-> select('table1。*,table2。*,table3。*'))的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个网站,该网站使用CodeIgniter框架,并且在每个请求中都使用CodeIgniter的预格式化查询类来处理由我的前同事构建的数据库中的数据。

I have a website which is using a CodeIgniter framework and almost using CodeIgniter's preformatted query class in every request to process data from database built by my ex coworker.

一个例子是像这样:

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查询。尝试执行此操作:

I want to change the result from that query, but in order to understand it first I have to translate it into an original MySQL query. Attempted to do this:

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-您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第6行的'WHERE A.status = 0 LIMIT 0,25'附近使用


我试图删除 WHERE A.status = 0 来查看代码中哪个错误,我得到了这个错误

I tried to remove the WHERE A.status = 0 to see which is wrong from my code the I got this error


1051-未知表'barang'


我认为问题出在 SELECT barang行中。* ,barang_keluar。*,barang_masuk。* ,因为我真的不知道如何用MySQL原始格式编写它。

I thought the problem is in the line SELECT barang.*, barang_keluar.*, barang_masuk.*, because I didn't really know how to write it in an MySQL original formatted.

我已经搜索了这个主题甚至尝试将查询直接写到搜索栏,但根据我的情况,我没有找到正确的方法。
希望有人可以提供帮助

I already searched for this topic and I even tried to write the query straight to the search bar but I didn't find the right approach according to my case. Hope someone can help

推荐答案

您只需打印查询,然后即可在

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。
确保该表存在。

But the error which you are getting is -> You don't have a table named barang. Make sure that the table exists.

希望有帮助...

这篇关于如何将Codeigniter预格式化查询转换为原始Mysql查询(例如$ this-> db-> select('table1。*,table2。*,table3。*'))的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆