通过 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;
我试图通过一个函数使用一个简单的查询,但它不起作用,我不知道为什么。
此代码在函数外完美运行:
$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;