Php MySQLi中的进程激活功能?
如果用户被激活(1),尝试在PHP和MySQLi中启动函数以返回TRUE;如果用户未被激活(0),则尝试启动函数以返回FALSE 我已经测试了这些代码,但运气不佳,出现了MySQLi错误。简单地说,我是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
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。谢谢你花时间向我这样的新手详细解释,如果有更多的人以这种方式帮助,我们这些新手很快就会成为专家,通过每个例子,我学到了很多东西,我会用你的建议回去工作,并尝试一下,我感谢你的帮助!