0

codeigniterモデルの関数が機能していません。codeigniterモデル関数の以下のコードが原因でhttpエラー500が発生します。このコードを削除すると、コードは正常に機能します。

function get_ad_by_user($a,$b)
    {
        $this->db->select('title,ci_categories.category,ci_subcategories.subcategory,state,city,locality,ad_website,description,phone_number,address,image_token1,image_token2');
        $this->db->from('ci_pre_classifieds');
        $this->db->join('ci_categories', 'ci_categories.category_id = ci_pre_classifieds.category');
        $this->db->join('ci_subcategories', 'ci_subcategories.subcategory_id = ci_pre_classifieds.sub_category');
        $this->db->where('ci_pre_classifieds.id',$a);
        $this->db->where('ci_pre_classifieds.ad_string_token',$b);
        $q=$this->db->get();
        $this->db->last_query();
        log_message('debug','******query'.$this->db->last_query().'********');
        if($q->num_rows()==1)
        {
            foreach($q->result_array() as $row)
            {
                $data['title]=$row['title'];
                $data['category']=$row['ci_categories.category'];
                $data['sub_category']=$row['ci_subcategories.subcategory'];
                $data['state']=$row['state'];
                $data['locality']=$row['locality'];
                $data['ad_website']=$row['ad_website'];
                $data['description']=$row['description'];
                $data['phone_number']=$row['phone_number'];
                $data['address']=$row['address'];
            }
        }
        else
        {
            $data['message']="sorry either classified expired or deleted";
        }

        return $data;
    }

ブロックごとにエラーが発生します。動作しているものをすべて削除すると...$data配列に$row配列をコピーする方法

4

1 に答える 1

1

$data['title]=$row['title'];'がありません。

これが理由かもしれませんが、そのエラーメッセージがなければ、わかりにくいです。

また、関数を次のように減らすこともできます。

function get_ad_by_user($a,$b)
{
    $data = array();

    $this->db->select('title,ci_categories.category,ci_subcategories.subcategory,state,city,locality,ad_website,description,phone_number,address,image_token1,image_token2');
    $this->db->from('ci_pre_classifieds');
    $this->db->join('ci_categories', 'ci_categories.category_id = ci_pre_classifieds.category');
    $this->db->join('ci_subcategories', 'ci_subcategories.subcategory_id = ci_pre_classifieds.sub_category');
    $this->db->where('ci_pre_classifieds.id',$a);
    $this->db->where('ci_pre_classifieds.ad_string_token',$b);
    $q=$this->db->get();
    log_message('debug','******query'.$this->db->last_query().'********');
    if($q->num_rows()==1)
    {
        $data[] = $q->row_array(); 
    }
    else
    {
        $data['message']="sorry either classified expired or deleted";
    }

    return $data;
}

クエリで1行のみを返す場合は、$q->row_array()または$q->row()を使用して1行を返すことができます。

$data = array()念のため、関数の開始時に宣言します。そうしないと、存在しないget_ad_by_userと文句を言う可能性があります。$data

于 2012-05-28T14:49:03.117 に答える