我刚开始习惯使用PDO而不是mysql_而且我目前正在将所有mysql_函数转换为PDO。我遇到的问题是我完全被这些功能所困扰。这些的目的是从登录时创建的$ _SESSION获取user_id,并使用该user_id从数据库返回其数据。但是,我收到了错误:
未定义的变量:user_data
每次我尝试检查某些内容是否为真时,例如admin = 1.这是user_data函数:
function user_data($user_id) {
global $con;
$data = array();
$user_id = (int)$user_id;
$func_num_args = func_num_args();
$func_get_args = func_get_args();
if ($func_num_args > 1) {
unset($func_get_args[0]);
$fields = '`' . implode('`, `', $func_get_args) . '`';
$data = "SELECT $fields FROM `users` WHERE `user_id` = $user_id";
$result = $con->prepare($data);
$result->execute();
$user_data = $result->fetch();
return $user_data;
}
}
如果禁用= 1:
,这段代码应调用该函数并销毁会话if (logged_in() === true) {
$session_user_id = $_SESSION['user_id'];
$user_data = user_data($session_user_id, 'user_id', 'username', 'password', 'email', 'password_recovery', 'moderator', 'admin');
if (user_banned($user_data['username']) === true) {
session_destroy();
header('Location: pts.php');
exit();
}
}
这是我尝试使用$ user_data变量的示例:
<?php if ($user_data['moderator'] == 1)
如果这很难理解,我很抱歉,因为我在编码方面是一个菜鸟,而且我不是特别擅长解释事情。如果您需要更多代码,请随时提出,我很乐意提供。
谢谢大家。
答案 0 :(得分:3)
如果用户已登录,则只定义$ user_data。在尝试访问之前,需要确保$ user_data存在。
if (!empty($user_data) && $user_data['moderator'] == 1)
答案 1 :(得分:0)
你的问题是你无法解释的:
$func_num_args = func_num_args();
$func_get_args = func_get_args();
当你的函数只有一个参数时。
然后是if
块中的代码:
if ($func_num_args > 1) {
...
return $userdata
}
永远不会执行。所以在你的主执行中调用$var = user_data(...);
PHP隐式地将$var
指定为NULL
,因为没有return语句,然后你的代码会在以后生成未定义的索引错误。