0

我很少有 if else 语句只返回真或假,而且每条语句都无法正常工作。我尝试了很多方法,但不知道问题所在。如果有人解决这个问题,那将非常有帮助。

这是我的模型代码

function exists($email){
    $this->db->where('email',$email);
    $query=$this->db->get('member_info');
    echo "model is called"; // after execution this text is shown but not the others
    if ($query->num_rows == 1) {           
        return true;        
        echo "i got one";
    }else{
        return false;
        echo "i got nothing";
    }       
}

这是我的控制器

function is_exists($email){
    echo "this is loaded";  //this line works properly
    if($this->validation_model->exists($email)){
        return false;
        echo "true"; //this doesn't 
    }else{
        return true;
        echo "false"; // this doesn't
    }
}
4

7 回答 7

3

您在打印回声部分之前返回该函数。您应该在返回之前回显。

还要换行检查多个

if ($query->num_rows() > 0 ) {

更新

试试这个方法。相应地替换表名、id 值。

$query = $this->db->query("select id form your_table where email=".$email);
if ($query->num_rows() > 0 ){
echo "i got one";
return true;
}
else{
echo "i got nothing";
return false;
}

另请查看您的控制器逻辑,当存在电子邮件时,它会返回 false。最好改变控制器的真假返回。

于 2013-07-11T06:13:12.163 回答
1

试试喜欢

if($this->validation_model->exists($email)){
    echo "true";
    return false; 
}else{
    echo "false";
    return true;
}  

把回声放在前面return,它应该像

$query->num_rows()
于 2013-07-11T06:10:44.677 回答
1

因为你在使用return,后面的代码return不会执行

return false;
echo "true"; // this doesn't because you have return before this line

return true;
echo "false"; // this doesn't because you have return before this line
于 2013-07-11T06:10:48.707 回答
0

改变这个:

if ($query->num_rows == 1) { 

对此:

if ($query->num_rows() == 1) { 

并更改以下内容:

if ($query->num_rows() > 0 ){
    echo "i got one";
    return true;
}
else{
    echo "i got nothing";
    return false;
}
于 2013-07-11T06:10:29.370 回答
0

更改此行:

if ($query->num_rows() == 1) {    
于 2013-07-11T06:11:02.420 回答
0
//num_rows() is a function
<?php 

function exists($email){
    $this->db->where('email',$email);
    $query=$this->db->get('member_info');
    echo "model is called"; // after execution this text is shown but not the others

    //num_rows() is a function
    if ($query->num_rows() == 1) {

        //add message before return statement
        echo "i got one";
        return true;


    }else{

        echo "i got nothing";
        return false;

    }
}
于 2013-07-11T06:12:18.730 回答
0

你的模型应该是:

if ($query->num_rows == 1) {           
    return true;        
}else{
    return false;
}

无需打印额外的回声。与您的控制器相同的故事

if($this->validation_model->exists($email)){
    return false;
}else{
    return true;
}

据我所知,您不能在 return 语句之后执行任何代码(在函数返回中)。

我的解决方案是:

在你的控制器中这样写

if($this->validation_model->exists($email)){
    echo "EMAIL EXIST";
}else{
    echo "EMAIL DOES NOT EXIST";
}
于 2013-07-11T06:15:06.547 回答