Php 使用PDO的未定义变量-混淆

Php 使用PDO的未定义变量-混淆,php,pdo,Php,Pdo,我刚刚开始在mysql上使用PDO,目前正在将所有mysql函数转换为PDO。我的问题是,我完全被这些函数难住了。这些操作的目的是从登录时创建的$会话中获取用户id,并使用该用户id从数据库返回其数据。但是,我得到了错误: 未定义变量:用户_数据 每次我试图检查某件事是否属实,例如如果admin=1。这是用户_数据函数: function user_data($user_id) { global $con; $data = array(); $user_id = (int

我刚刚开始在mysql上使用PDO,目前正在将所有mysql函数转换为PDO。我的问题是,我完全被这些函数难住了。这些操作的目的是从登录时创建的$会话中获取用户id,并使用该用户id从数据库返回其数据。但是,我得到了错误:

未定义变量:用户_数据

每次我试图检查某件事是否属实,例如如果admin=1。这是用户_数据函数:

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\u数据变量的一个示例:

<?php if ($user_data['moderator'] == 1)

只有在用户登录时才定义$user\u数据。在尝试访问$user_数据之前,需要确保该数据存在

if (!empty($user_data) && $user_data['moderator'] == 1)

如果用户已登录,则仅定义$user\u数据。在尝试访问$user_数据之前,需要确保该数据存在

if (!empty($user_data) && $user_data['moderator'] == 1)

您的问题在于无法解释地使用:

$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
,因为没有返回语句,随后代码生成未定义的索引错误。

您的问题是无法解释地使用了:

$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
,因为没有返回语句,然后您的代码稍后会生成一个未定义的索引错误。

PDO中没有未定义的变量PDO中没有未定义的变量