通过PHP7.2中的函数访问数据库不起作用

通过PHP7.2中的函数访问数据库不起作用,php,jquery,function,php-7.2,Php,Jquery,Function,Php 7.2,我试图通过一个函数使用一个简单的查询,它不工作,我不知道为什么 此代码在函数外部工作得非常好: $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 = implod

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

此代码在函数外部工作得非常好:

$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;
}

我正在努力将我的PHP5.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'];
或:


您正在使用函数中不存在的变量。您必须像这样传递
$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'];
或:


使用事先准备好的陈述。@这是比我的答案更好的参考:)我也在投票。你的答案很好,因为它解决了OP的问题,让他们继续前进。副本只会提供更多的信息和准备好的语句。@这是比我的答案更好的参考吗:)我也投了副本的票。你的答案很好,因为它解决了OP的问题,让他们继续前进。复制可以提供更多的infosah,但我没有意识到我必须传递所有变量。我的假设是,函数之外的任何变量都可以在函数中工作,就像在JS中一样。谢谢对的这在类中有点不同,您可以将db对象保存在类变量中,并直接在该类中的方法中访问它。但有一个例子需要补充:)无论你做什么,不要屈从于只使用
global
everywhere;)啊,我没有意识到我必须传递所有变量。我的假设是,函数之外的任何变量都可以在函数中工作,就像在JS中一样。谢谢对的这在类中有点不同,您可以将db对象保存在类变量中,并直接在该类中的方法中访问它。但有一个例子需要补充:)无论你做什么,不要屈从于只使用
global
everywhere;)