【问题标题】:PHP code after IF not executedIF未执行后的PHP代码
【发布时间】:2012-01-06 21:37:55
【问题描述】:

我有这个功能

public function logout() {
    if ($this -> user_model -> is_logged() === TRUE) {

        $user_id = $this -> user_model -> get_id();

        if (get_cookie('cookie_name') != FALSE) {

            delete_cookie('cookie_name');

            $new_cookie = md5(sha1(rand() . time() . $user_id));

            $this -> db -> set('cookie', $new_cookie);

            $this -> db -> update('users') -> where('id = ' . "'" . $user_id . "'");
        }

        $this -> session -> unset_userdata('user_id');

        echo "logged out? <a href=" . base_url() . ">click here</a>";
    } else {
        echo "no";
    }

}

if (get_cookie('cookie_name') != FALSE) {

为真,如果括号内的代码被执行,那么其他两行代码:

   $this -> session -> unset_userdata('user_id');

   echo "logged out? <a href=" . base_url() . ">click here</a>";

当 if 代码没有被执行时,这些行被正确执行。

if 里面的代码被正确执行,因为 cookie 被删除,数据库被更新。

我正在使用 Codeigniter 2.1.0,但我认为问题与此无关。

我的 php 版本是 Ubuntu 11.04 上 localhost 下的 5.3

【问题讨论】:

  • 我很难解决您的问题。执行内部 If 语句时,以下两行代码没有正确执行?这就是你想说的吗?
  • 是否有可能update 有一个致命错误或exit 或最后的什么? unset_userdata 怎么样?
  • 我不完全确定你可以像你一样链接 db 命令。将 where 子句移至其 on db 调用... $this->db->where("") 然后运行 ​​$this->db->update()。再说一次,我不确定这是不正确的,我只是从未见过这样做过。

标签: php codeigniter if-statement


【解决方案1】:

正如我上面评论的那样,您的更新声明需要分开。您需要更改此行:

$this -> db -> update('users') -> where('id = ' . "'" . $user_id . "'"); 

到这里:

$this->db->where('id = ' . "'" . $user_id . "'"); 
$this->db->update('users');

请注意,在更新语句之后 where 子句被“清空”,如果您计划在未来进行多次更新,那么您将不得不重复 where 子句。

【讨论】:

  • 这就是问题所在,但很奇怪,对于其他类型的查询它可以工作并且查询被正确执行,但可能由于某种原因它失败了。正如您可以在此处阅读的那样codeigniter.com/user_guide/database/active_record.html 方法链接自 php5 以来可用,并且到目前为止它对 select 工作良好
  • 例如这个作品 $this -> db -> set('activation_code', 'activated'); $this -> db -> update('users') -> where('activation_code = ' . "'" . $code . "'");
  • 只是为了澄清更新前必须在哪里。试试这个: $this->db->where('id, $id)->update('page', $data);
  • 我会确保最后一个子句的“where”部分正确执行。它可能正在执行更新并忽略“位置”部分。就像我说的那样,我以前从未见过。我想这个周末我会玩它并评论我发现的东西。很高兴它解决了您的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多