0

各メソッドをデフォルト値で個別にテストしましたが、すべて機能しているようです。それらがすべて混ざり合うと、何かが起こっています。

ここにコードを示します。わかりやすい方法で記述できるように最善を尽くします。

コントローラーから始めます。

if ($active['newcliq']) 
            {   
                $newcliqid = $this->create_m->create_keyword($cliq, $cliqid);
                if (!$newcliqid) {
                echo json_encode(array('success' => false));
                } else {
                    $this->logic_m->change_active($newcliqid, $cliq);
                }
            }

$active['newcliq']true または false であり、から取得されますuserdata('active')

もちろん、次に実行されるのはcreate_keyword($cliq, $cliqid)以下のとおりです。

$this->db->insert('cliq', $insert); 
            $newcliqid = $this->db->insert_id();
            if ($newcliqid) {
                return $newcliqid;
            } else {
                return false;
            }

繰り返しますが、すべて手動で確認しましたが、それが正しい値を返し、関数全体が正しい値を返していること$newcliqidがわかりました。insert_id

したがって$newcliqid、コントローラーに返され、以下に示すように実行されlogic_m->change_activeます。

if (!$this->logic_m->cliqidcheck($cliqid)){
                $cliqid = 6;
            }

上記の行は、私に問題を引き起こしているものです。値に関係なく、$cliqid常に 6 に設定されます。cliqidcheck が true または false を返すかどうか。

ここはcliqidcheck($cliqid)

    public function cliqidcheck($cliqid)
    {
        if ((ctype_digit($cliqid)) AND ($this->checkcliqidexist($cliqid)))
        {
            return true;
        } else {
            return false;
        }
    }

手動で入力した値で cliqidcheck をテストしたところ、常に正しい値が返されます。さらに、モデルから cliqidcheck を完全に削除したところ、change_active完全に機能しました。

また、コントローラーの変数$newcliqidをエコーし​​て、正しい値を見つけました。

これが私が見落としている単純な問題であることを願っています。助けてくれてありがとう!さらに情報が必要な場合はお知らせください。

4

1 に答える 1