【问题标题】:PHP Variables are undefined, yet I set them in functionPHP变量未定义,但我在函数中设置它们
【发布时间】:2015-05-20 15:55:49
【问题描述】:

所以,我一直在写一些 PHP,我正在从我的数据库中获取一些数据以进行输出。我像普通人一样使用函数,但由于某种原因,函数中被拒绝的变量显然未声明?

这是我的代码:

function fetchUserData($localUser_id) {

    include_once("../../../conConfig/connectToDatabase.php");

    $dataQuery = mysqli_query($dbConnect, "SELECT users.emailAddress, userInfo.fullName, userInfo.initials, userInfo.maxWorkspaces FROM users INNER JOIN userInfo ON userInfo.ID = users.ID WHERE users.ID = ".$localUser_id."");
    $queryResult = mysqli_fetch_array($dataQuery, MYSQLI_ASSOC);

    $db_dash_userName   = $queryResult["fullName"];
    $db_dash_userEmail  = $queryResult["emailAddress"];
    $db_dash_userIcon   = "initials";
    $db_dash_userMaxW   = $queryResult["maxWorkspaces"];
    $db_dash_userInit   = $queryResult["initials"];

    echo $db_dash_userName.$db_dash_userEmail.$db_dash_userIcon.$db_dash_userMaxW.$db_dash_userInit."<br><br><br>";

}

//$localUser_id = $_SESSION["user_id"];
$localUser_id = 1;
fetchUserData($localUser_id);

echo $db_dash_userName.$db_dash_userEmail.$db_dash_userIcon.$db_dash_userMaxW.$db_dash_userInit;

它可能有什么问题?它返回一个值,由函数内部的 echo-ing 输出,但最终的“echo”并未输出它们。

是的,我已经尝试过“return variable.variable...”,但这仍然不能解决问题。

提前致谢。

【问题讨论】:

  • 我认为你需要从函数中返回值而不是回显它们。
  • 你需要了解变量作用域。
  • 我试过“返回变量...”,但问题仍然存在...
  • 在您的情况下,您最好将函数插入数组中,然后返回该数组。然后,您应该能够在调用函数后从返回的数组中访问这些变量。
  • 警告:使用mysqli 时,您应该使用参数化查询和bind_param 将用户数据添加到您的查询中。 请勿使用字符串插值来完成此操作,因为您将创建严重的SQL injection bugs。 从不将$_POST数据直接放入查询中。

标签: php mysql database echo


【解决方案1】:

您需要从函数返回值。回显不返回值。您还需要将返回的值分配给一个变量并使用它来显示输出。

function fetchUserData($localUser_id) {

        include_once("../../../conConfig/connectToDatabase.php");

        $dataQuery = mysqli_query($dbConnect, "SELECT users.emailAddress, userInfo.fullName, userInfo.initials, userInfo.maxWorkspaces FROM users INNER JOIN userInfo ON userInfo.ID = users.ID WHERE users.ID = ".$localUser_id."");
        $queryResult = mysqli_fetch_array($dataQuery, MYSQLI_ASSOC);

        $db_dash_userName   = $queryResult["fullName"];
        $db_dash_userEmail  = $queryResult["emailAddress"];
        $db_dash_userIcon   = "initials";
        $db_dash_userMaxW   = $queryResult["maxWorkspaces"];
        $db_dash_userInit   = $queryResult["initials"];

        return $db_dash_userName.$db_dash_userEmail.$db_dash_userIcon.$db_dash_userMaxW.$db_dash_userInit."<br><br><br>";

    }

    //$localUser_id = $_SESSION["user_id"];
    $localUser_id = 1;
    $output = fetchUserData($localUser_id);

    echo $output;

【讨论】:

  • 感谢您的帮助。我建议使用 implode() 函数来分离出新值:)
  • @RyanCastle 你是说你想在显示之前使用内爆函数吗?
  • @RyanCastle 您可以从函数返回数组,然后在显示之前内爆返回值。如果你愿意,我可以编辑答案以显示这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-30
  • 1970-01-01
相关资源
最近更新 更多