通过 PHP 7.2 中的函数访问数据库不起作用

Accessing a database through a function in PHP 7.2 not working

我试图通过一个函数使用一个简单的查询,但它不起作用,我不知道为什么。

此代码在函数外完美运行:

$mysqli = new mysqli($db_hostname, $db_username, $db_password, $db_database);
$NEWUSER = "jack";

$query = $mysqli->query("SELECT user_name FROM Users WHERE user_name = '$NEWUSER'");
$result = implode("",$query->fetch_assoc());
echo $result;

但是当我把它放在一个函数中时它就停止工作了!?

$mysqli = new mysqli($db_hostname, $db_username, $db_password, $db_database);
$NEWUSER = "jack";

someFunction();

function someFunction() {
    $query = $mysqli->query("SELECT user_name FROM Users WHERE user_name = '$NEWUSER'");
    $result = implode("",$query->fetch_assoc());
    echo $result;
}

我正在着手将我的 PHP 5.5 站点升级到 7.2,但我不明白我做错了什么,因为这之前工作得很好,谢谢。

您正在函数内部使用一个不存在的变量。您必须像这样传递 $mysqli 对象变量(和 $NEWUSER):

$mysqli = new mysqli($db_hostname, $db_username, $db_password, $db_database);
$NEWUSER = "jack";

someFunction($NEWUSER,$mysqli);
//              ^--------^---- note passing it in along with the NEWUSER var

function someFunction($NEWUSER,$mysqli) {
//                       ^--------^---- define them for pass-in
    $query = $mysqli->query("SELECT user_name FROM Users WHERE user_name = '$NEWUSER'");
    $result = implode("",$query->fetch_assoc());
    echo $result;
}

附带说明一下,这很奇怪:

$result = implode("",$query->fetch_assoc());
echo $result;

您可以在 php7:

中解决这个问题
echo $query->fetch_assoc()['user_name'];

或:

echo $query->fetch_object()->user_name;