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