gpt4 book ai didi

php - Codeigniter 中的冲突 mysql 查询

转载 作者:行者123 更新时间:2023-11-29 17:56:55 25 4
gpt4 key购买 nike

我在使用两个 mysql 查询时遇到冲突错误。我想使用连接语法从数据库中获取两个表,一切都很顺利,直到我在 where 子句中放置一个外部函数,该函数从另一个模型返回一个 ID。这会导致查询发生冲突。

这是我的第一个也是主要模型函数:

function get_festival_data($options = array())
{
// Qualification
if(isset($options['festival_Id']))
$this->db->where('md_festivals.festival_Id', $options['festival_Id']);

if(isset($options['festival_Status']))
$this->db->where('festival_Status', $options['festival_Status']);

$this->db->where('lang_Id', currentLanguageID());

$this->db->from('md_festivals');

$this->db->join('md_festival_details', 'md_festival_details.festival_Id = md_festivals.festival_Id');

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

if(isset($options['festival_Id']) return $query->row(0);

return $query->result();
}

这是一个创建全局函数的助手:

function currentLanguageID()
{

$language = get_instance()->languages_model->get_language_data
(
array(
'lang_Abbr' => config('language_abbr')
)
);

return $language->lang_Id;
}

它很好地返回了 ID

这是另一个模型函数:

function get_language_data($options = array())
{
// Qualification
if(isset($options['lang_Id']))
$this->db->where('lang_Id', $options['lang_Id']);

if(isset($options['lang_Abbr']))
$this->db->where('lang_Abbr', $options['lang_Abbr']);

$query = $this->db->get('md_languages');

if(isset($options['lang_Id']) || isset($options['lang_Abbr']))
return $query->row(0);

return $query->result();
}

以下是我遇到的冲突和错误:

Error Number: 1054

Unknown column 'md_festivals.festival_Id' in 'where clause'

SELECT * FROM md_languages WHERE md_festivals.festival_Id = '6' AND festival_Status = 1 AND lang_Abbr = 'fa'

Filename: D:/xampp/htdocs/aksineh/system/database/DB_driver.php

Line Number: 691

它将两个模型的 where 子句放在一起并产生冲突!!

最佳答案

通过更改 where 子句的顺序解决了该问题。我将 $this->db->where('lang_Id', currentLanguageID()); where 子句带到函数的开头:

function get_festival_data($options = array())
{
// Qualification

$this->db->where('lang_Id', currentLanguageID());


if(isset($options['festival_Id']))
$this->db->where('md_festivals.festival_Id', $options['festival_Id']);

if(isset($options['festival_Status']))
$this->db->where('festival_Status', $options['festival_Status']);

$this->db->from('md_festivals');

$this->db->join('md_festival_details', 'md_festival_details.festival_Id = md_festivals.festival_Id');

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

if(isset($options['festival_Id']) return $query->row(0);

return $query->result();
}

关于php - Codeigniter 中的冲突 mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48729806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com