刀客孩哥 发表于 2010-8-25 10:57:05

看了<一哈子>会员系统教学视频的请进!!急盼赐教

本帖最后由 刀客孩哥 于 2010-8-25 14:24 编辑

model里有这么个函数,负责把表单里的数据弄进数据库
function add_user()
    {
      $useremail=$this->input->post('useremail');
      $password=$this->input->post('password');
      $nicheng=$this->input->post('nicheng');
      $mysex=$this->input->post('mysex');
      $brithyeah=$this->input->post('brithyeah');
    //.....略
      
      $query = $this->db->query("SELECT username From dc_user WHERE username = '$useremail'");
      if($query->num_rows() > 0)
      {
            return $useremail;
      }

      $password = md5($password);
      $sql="INSERT INTO user(username,password,nicheng)VALUES('$useremail','$password','$nicheng')";
      $query = $this->db->query($sql);
//      $new_id_number=$this->db->insert_id();
//      $sql2="INSERT INTO user_info VALUES('$new_id_number','$mysex','$brithyeah','$brithmonth','$brithday',
//      '$shen','$shi','$shengao','$xueli','$yuexin','$zhufang','$hunkuang','$haizi','$handphone','$buchong')";
//      $query2 = $this->db->query($sql2);
      if($query && $query2)
      {
            return $this->db->insert_id();
      }else{
            return false;
      }
    }

控制器里有这么个函数:是判断用户名是否重复
if($this->form_validation->run()==FALSE){
                $this->load->view('register');
            }else{
                $this->load->model('M_user');
                $query = $this->M_user->add_user();
               
                if($query == $this->input->post('useremail',TRUE))
                {
                  $data['useremail_exist'] = $this->input->post('useremail');
                  $this->load->view('register',$data);
                }else{
                  
                  $this->session->set_userdata('useremail',$this->input->post('useremail'));
                  redirect('Home/user');
                }
            }

      }

问题:插入单表是可以的,一切正常。但我的注册表单要分别插入两个表,user和user_info。。我加上model里所注释的代码后,插入数据是成功的,但views里那个对用户名是否重复的判断好像就不灵了。无论重不重复,提交注册表单后都到达regsiter页,正常情况应该是:不重复就进user页

急盼赐教啊!

visvoy 发表于 2010-8-25 11:34:02

if($query == $this->input->post('useremail',TRUE))
改成
if($query === $this->input->post('useremail',TRUE))

刀客孩哥 发表于 2010-8-25 14:23:18

回复 2# visvoy


    果然是这个问题,谢谢版主!
 请问其中的原理

Hex 发表于 2010-8-25 14:28:17

== 是等于
=== 是全等于,也就是必须类型相同。
这个在 PHP 手册上有详细说明 php.net

visvoy 发表于 2010-8-25 14:31:32

:lol同ls

刀客孩哥 发表于 2010-8-25 14:38:31

谢谢两位老大!
为什么那个$useremail发生了变故呢,ci在幕后又做了什么样的一个手脚呢。。

visvoy 发表于 2010-8-25 14:49:47

跟ci没有任何关系,纯php原理,俩等号不是全等于,php会自动将等号左右的东西转成boolean
string只有空值和'0'是false,其余都是true,true==true,所以true

刀客孩哥 发表于 2010-8-25 14:51:33

谢谢两位老大!
为什么那个$useremail发生了变故呢,ci在幕后又做了什么样的一个手脚呢。。

Hex 发表于 2010-8-25 15:02:21

和 CI 无关,请看 PHP 手册: php.net

PHPall 发表于 2010-8-27 16:16:16

嗯 不好意思,确实是=== 判断全等。
页: [1] 2
查看完整版本: 看了<一哈子>会员系统教学视频的请进!!急盼赐教