Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQLi中的进程激活功能?_Php_Html_Mysqli - Fatal编程技术网

Php MySQLi中的进程激活功能?

Php MySQLi中的进程激活功能?,php,html,mysqli,Php,Html,Mysqli,如果用户被激活(1),尝试在PHP和MySQLi中启动函数以返回TRUE;如果用户未被激活(0),则尝试启动函数以返回FALSE 我已经测试了这些代码,但运气不佳,出现了MySQLi错误。简单地说,我是MySQLi的新手 function get_activated($mysqli, $userid) { $row = $mysqli->query("SELECT * FROM users WHERE userid = '{$userid}' AND activated = '1

如果用户被激活(1),尝试在PHP和MySQLi中启动函数以返回TRUE;如果用户未被激活(0),则尝试启动函数以返回FALSE

我已经测试了这些代码,但运气不佳,出现了MySQLi错误。简单地说,我是MySQLi的新手

function get_activated($mysqli, $userid) {

    $row = $mysqli->query("SELECT * FROM users WHERE userid = '{$userid}' AND activated = '1'")->fetch_array();
    if($row){
        $activated = TRUE;
        return $activated;
    }
}

function get_activated($mysqli) {

    $row = $mysqli->query("SELECT * FROM users WHERE userid = '{$userid}' AND activated = '1'")->fetch_array();
    if($row){
        $activated = TRUE;
        return $activated;
    }
}

function get_activated($mysqli, $userid) {
    if(isset($_SESSION['userid'])) {
         $userid = $_SESSION['userid'];
    $row = $mysqli->query("SELECT * FROM users WHERE userid = '{$userid}' AND activated = '1'")->fetch_array();
    if($row){
        $activated = TRUE;
        return $activated;
    }
    }
}

function get_activated($mysqli) {
    if(isset($_SESSION['userid'])) {
         $userid = $_SESSION['userid'];
    $row = $mysqli->query("SELECT activated FROM users WHERE userid = '{$userid}'")->fetch_array();
    return $row["activated"];
    }
}
我这样调用函数:

get_activated($userid);
                echo $activated;
                exit();

get_activated();
            echo $row['activated'];
            exit();
如果有人能给我指出正确的方向,我将非常感激,谢谢

错误示例:

get_activated()缺少参数2 对非对象调用成员函数query() 只能通过引用传递变量
get_activated()缺少参数1

我认为您正在寻找类似以下内容:

function get_activated($mysqli, $userid) {
    $row = $mysqli->query("SELECT * FROM users WHERE userid = '$userid' AND activated = '1'")->fetch_array();
    if(!empty($row)){
        return true;
    }
    return false;
}
fetch_array()方法是MySQLi,如果它找不到行,它将返回null,我喜欢使用empty,以防您扩展了MySQLi并以某种方式更改了功能-我以前无意中这样做过

然后调用此函数时,还应使用-

$activated = get_activate($mysqli,1);
var_dump($activated);

顺便说一句,我会一直使用事先准备好的陈述,但这不是这个问题。

所以让我们逐一来看看这些

function get_activated($mysqli, $userid) {

    $row = $mysqli->query("SELECT * FROM users WHERE userid = '{$userid}' AND activated = '1'")->fetch_array();
    if($row){
        $activated = TRUE;
        return $activated;
    }
}
So+1用于注入
mysqli
类,但您只查看查询是否成功。请记住,查询可以成功并返回0行。如果查询成功,您也只能
返回
一些内容。成功时应返回
true
,不成功时应返回
false

函数#2令人困惑,因为它忽略了
$userid
,并且遇到了同样的问题

function get_activated($mysqli, $userid) {
    if(isset($_SESSION['userid'])) {
         $userid = $_SESSION['userid'];
    $row = $mysqli->query("SELECT * FROM users WHERE userid = '{$userid}' AND activated = '1'")->fetch_array();
    if($row){
        $activated = TRUE;
        return $activated;
    }
    }
}
所以现在我们有了
$\u SESSION
值,但仍然将
$userid
作为参数传递(这很容易混淆)。然后我们查看
查询
是否返回任何值。这更好,但将
query
链接到
fetch.*
是一种不好的形式,因为如果查询失败,就会出现致命错误

function get_activated($mysqli) {
    if(isset($_SESSION['userid'])) {
         $userid = $_SESSION['userid'];
    $row = $mysqli->query("SELECT activated FROM users WHERE userid = '{$userid}'")->fetch_array();
    return $row["activated"];
    }
}
因此,
$userid
与#3存在相同的问题,链接也存在相同的问题,但我们更接近,因为我们至少返回了一个值。但是,如果查询返回0行,则不考虑会发生什么。

现在让我们编写一个完整的函数

function get_activated($mysqli, $userid) {
     $uid = $mysqli->real_escape_string($userid);
     $result = $mysqli->query("SELECT * FROM users WHERE userid = " . $uid . " AND activated = '1'");
     $data = $result->fetch_assoc();
     return ($data) ? true : false;
}
因此,首先我们清理
$userid
。然后我们对它进行查询。之后,我们寻找返回的行,如果我们做了或没有做,则返回一个布尔值。现在我们可以这样使用它

if(get_activated($mysqli, $userid)) {
    echo 'Activated';
} else {
    echo 'Not activated';
}

为什么有这么多函数的名称相同?(
get_activated()
)?另外,当您
返回一个变量时,该变量被设置为赋值,而不是像您正在尝试的那样被调用……它应该是这样的:
$activated=get\u activated($userid)显示mysqli错误。请将您遇到的错误放入问题中。另一个注意事项:您应该检查查询是否成功,而不仅仅是希望它运行并获取数据。非常感谢!第一次工作,这正是我想要的——在一张便条上,你已经进入了($mysqli,1);要调用该函数,是否只是告诉它调用$userid?与MySQL的旧版本一样,我记得函数中有通过它们发送的变量,比如我问题中的get_activated($userid);等等…我只是举了一个例子userid,我认为是1,是的,你应该使用$userid。谢谢你花时间向我这样的新手详细解释,如果有更多的人以这种方式帮助,我们这些新手很快就会成为专家,通过每个例子,我学到了很多东西,我会用你的建议回去工作,并尝试一下,我感谢你的帮助!