各メソッドをデフォルト値で個別にテストしましたが、すべて機能しているようです。それらがすべて混ざり合うと、何かが起こっています。
ここにコードを示します。わかりやすい方法で記述できるように最善を尽くします。
コントローラーから始めます。
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
をエコーして、正しい値を見つけました。
これが私が見落としている単純な問題であることを願っています。助けてくれてありがとう!さらに情報が必要な場合はお知らせください。