我正在浏览我的网站,并尝试使其更适合将来使用,并使其更清洁,以便将许多内容转换为通用功能。
我有一个特殊的功能,它接受用户会话(会话名称是用户名),并在数据库上运行查询,该查询为该用户获取所有其他数据。
我希望userID
在某些部分使用,但出现错误“注意:未定义的变量”
这是一个例子:
function getUserData_FromSession() {
if (isset($_SESSION['user'])) {
$username = "root";
$password = "root";
$host = "localhost";
$dbname = "06vids";
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
try
{
$db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options);
}
catch(PDOException $ex)
{
die("Failed to connect to the database: " . $ex->getMessage());
}
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$stmt = $db->prepare('SELECT * FROM users WHERE username = "' . $_SESSION['user']. '"');
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
while($row = $stmt->fetch()){
$userid = $row['id'];
$usernameuser = $row['username'];
}
}
}
该功能位于页面中包含的功能文件中,我在该页面上执行以下操作:
getUserData_FromSession();
if ($userid == $userbuildid) {
$editenabled = 'edity';
} else if ($userid !== $userbuildid) {
$editenabled = 'editx';
}
这给出了未声明$ userid的错误。如果我实际上在同一页面上有查询,那么它工作正常,但我不想到处都弹出查询负载。
您的变量是在函数的本地范围内定义的,永远无法在该函数外部访问。当然,除非您将其定义为全局。
http://php.net/manual/zh/language.variables.scope.php
因此,快速修复如下所示:
function getUserData_FromSession() {
global $userid;
(...)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句