php - 使用交叉条件从两个不同的数据库以 CI 格式获取数据

标签 php mysql codeigniter

$this->fifo_db->select('u.name,d.title');
$this->fifo_db->from('tbl_user u');
$this->db->join('designations d','d.id = u.designationid','left');
$this->db->where(array('u.designationid > ' => 1,'d.salary > ' => '20000'));
$query = $this->fifo_db->get();
return $query->result_array();

尝试使用来自不同数据库的两个表的联接来获取 CI 格式的数据,但出现错误。

最佳答案

我认为您需要在表引用前添加数据库名称作为前缀。

由于多种原因,此代码不使用查询生成器或表别名。

  1. 为了证明多个数据库的概念,编写以下代码更容易 完整的查询字符串。
  2. 我不确定别名的使用效果如何 带有数据库名称前缀,我也不知道在包含数据库名称时如何使用别名。

我检查db->query的返回,因为如果查询导致错误,它将是FALSE。如果 $query 为 FALSE,则调用 $query->result_array() 将导致抛出异常。

您需要实际的数据库名称。我已经命名了 dbUdbD

$sql = "SELECT dbU.tbl_user.name, dbD.designations.title FROM dbU.tbl_user  
        LEFT JOIN dbD.designations ON dbD.designations.id = dbU.tbl_user.designationid
        WHERE dbU.tbl_user.designationid > 1 AND dbD.designations.salary > 20000";

$query = $this->db->query($sql);

if($query !== FALSE)
{
    return $query->result_array();
}

return NULL;

我认为您使用哪个 CI 数据库对象(fifo_dbdb)并不重要。我很确定数据库需要位于同一网络服务器上。

如果上述方法有效,您可以添加别名,然后,如果有效,请重构它以使用查询生成器。坦率地说,根据显示的查询,我看不出有任何 QB 的理由。但您可能有更复杂的需求但没有分享。

关于php - 使用交叉条件从两个不同的数据库以 CI 格式获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53668212/

相关文章:

php - 如何在 PhpStorm 中检测到更改时刷新文件

mysql - 多个组的 SQL 查询将每个组组合为 AND 语句,并在每个组内组合为 OR 语句

php - jquery 数据表中的 json 响应无效

javascript - 如何在上传图片时发送一些额外的字段?

php - 使用 mysql 将记录显示为 longdate unixtime 到日期,如 2018-03-17 到 2018-03-20

php - 从两个 MySQL 表创建过滤数组

php - 需要调用 jquery 函数,反之亦然

php - 错误: Object of class Illuminate\Database\Eloquent\Builder could not be converted to string

php - 从 mysql 过渡到 MySQLi 或 PDO

javascript - ajax成功未获取php记录