Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 模型中的查询在被更改后停止工作_Php_Mysql_Arrays_Codeigniter - Fatal编程技术网

Php 模型中的查询在被更改后停止工作

Php 模型中的查询在被更改后停止工作,php,mysql,arrays,codeigniter,Php,Mysql,Arrays,Codeigniter,我有一个有效的CI模型函数获取信息: function get_info($item_id) { $this->db->from('items'); $this->db->where('item_id', $item_id); $query = $this->db->get(); if($query->num_rows()==1) { return $query->row();

我有一个有效的CI模型函数
获取信息

function get_info($item_id)
{  

    $this->db->from('items');
    $this->db->where('item_id', $item_id);


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

    if($query->num_rows()==1)
    {
        return $query->row();
    }
    else
    {

        $item_obj=new stdClass();
        $fields = $this->db->list_fields('items_tier_prices');

        foreach ($fields as $field)
        {
            $item_obj->$field='';
        }

        return $item_obj;
    }
}
我需要使用此自定义查询修改上述函数
get_info

function get_info($item_id)
{
$sql_query = $this->db->query("select * from (select items.name as name, items.category as category, items.supplier_id as supplier_id, items.item_number as item_number, items.product_id as product_id, items.description as description, items.size as size, items.tax_included as tax_included, items.cost_price as cost_price, items_tier_prices.unit_price  as unit_price, items.promo_price as promo_price, items.start_date as start_date, items.end_date as end_date, items.reorder_level as reorder_level, items.item_id as item_id, items.allow_alt_description as allow_alt_description, items.is_serialized as is_serialized, items.image_id as image_id, items.override_default_tax as override_default_tax, items.is_service as is_service, items.deleted as deleted

    from items
LEFT JOIN items_tier_prices
ON items.item_id=items_tier_prices.item_id
LEFT JOIN price_tiers
ON price_tiers.id=items_tier_prices.tier_id
where
 price_tiers.name='jendela kaca mati single'
 and items.deleted=0

 union
select items.*
from items
left join items_tier_prices
ON items.item_id=items_tier_prices.item_id
where items_tier_prices.item_id is null
and items.deleted=0
) x
where x.item_id=".$item_id);


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

if($query->num_rows()==1)
{
    return $query->row();
}
else
{
    $item_obj=new stdClass();

    $fields = $this->db->list_fields('items');
    $fields = $this->db->list_fields('price_tiers');
    $fields = $this->db->list_fields('items_tier_prices'); 

  foreach ($fields as $field)
    {
        $item_obj->$field='';
    }

    return $item_obj;
}

}
问题是在修改查询和列表字段后,
get\u info
功能不再工作

我确信查询在phpmyadmin中工作,并且在函数中生成的查询结果是相同的。它产生相同的列名,只产生一行结果

但我不确定:

    $fields = $this->db->list_fields('items');
    $fields = $this->db->list_fields('price_tiers');
    $fields = $this->db->list_fields('items_tier_prices'); 

我对停止函数“获取信息”的修改有什么问题?

您调用了两次
$this->db->query

将您编写查询的代码更改为:

$sql_query = "select * from (select items.name as name
             ..etc..";
然后执行脚本中的查询:

$query = $this->db->query($sql_query);
如果查询正确,则返回一行。请记住,当查询最终返回0行或多于1行时,要处理异常


您还可以检查浏览器控制台。如果查询语法有错误,您将发现
500内部服务器错误
,它允许您检查可能导致错误的原因。

您正在调用
$this->db->query
两次

将您编写查询的代码更改为:

$sql_query = "select * from (select items.name as name
             ..etc..";
然后执行脚本中的查询:

$query = $this->db->query($sql_query);
如果查询正确,则返回一行。请记住,当查询最终返回0行或多于1行时,要处理异常


您还可以检查浏览器控制台。如果查询语法中有错误,您将发现
500内部服务器错误
,它允许您检查可能导致错误的原因。

使用UNION,两个查询必须返回相同数量的列,并且查询1中的列必须与查询2中的列具有相同的数据类型。我确信它们具有相同的数据。你能检查一下$fields=$this->db->list_fields('items')的部分吗$字段=$this->db->list_字段('price_tiers')$字段=$this->db->list_字段('items_tier_prices');在这上面放三张桌子对吗?但我想我加入了所有的表,所以我必须列出所有表的_字段,而且你正在覆盖你的变量。试试这个:
$fields=[]$字段[]=$this->db->list_字段('items')
使用UNION时,两个查询必须返回相同数量的列,并且查询1中的列必须与查询2中的列具有相同的数据类型。我确信它们具有相同的数据。你能检查一下$fields=$this->db->list_fields('items')的部分吗$字段=$this->db->list_字段('price_tiers')$字段=$this->db->list_字段('items_tier_prices');在这上面放三张桌子对吗?但我想我加入了所有的表,所以我必须列出所有表的_字段,而且你正在覆盖你的变量。试试这个:
$fields=[]$字段[]=$this->db->list_字段('items')