php - 如何将 Codeigniter 预格式化查询转换为原始 Mysql 查询(例如 $this->db->select ('table1.*,table2.*,table3.*' ))

标签 php mysql codeigniter

我有一个使用 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/

相关文章:

php - 如何在mysql中将前导零添加到不同的字符长度?

php - 获取字段名称及其值并在 php 中进行编辑

javascript - map 无法在 View 中加载

javascript - 在 codeigniter 的一页上进行多页分页的最佳方法

php - SQL View 中的唯一列

PHP,如何将 func-get-args 值作为参数列表传递给另一个函数?

php - 将参数传递给 zend paginationControl partial

php - 在单个查询中合并到两个表以对数据进行排序

Mysql Join 显示所有有或没有匹配记录的记录

php - CodeIgniter - 如何从 ajax 方法返回值?