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']是真还是假,从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

2

与其口头解释,不如发布调试代码

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

它是输出。

即使没有在这里发布它也会让你相信 if 语句实际上永远不会“不管真假都运行”

设置完整的错误报告也有帮助(查找错别字等)

ini_set('display_errors',1);
error_reporting(E_ALL);

还有关于过多代码的说明。这个说法

if (condition)
{
    return true;
} else {
    return false;
}

can (and should, in my opinion) be shortened to

return (condition);

Same goes for insert id. Why not to make it just

return $this->db->insert_id();

without all that windy

if ($newcliqid) {
    return $newcliqid;
} else {
    return false;
}

which is actually a mere tautology

于 2013-06-17T15:36:08.420 回答