当我使用函数运行查询时,mysqli查询的问题


issue with mysqli query when I use the function to run the query

当我在函数内使用mysqli运行查询时,为什么会出现此错误?它在函数外工作得很好。当运行该函数时,错误提示"$db"变量未定义。

<?php
$username = 'username';
$password = 'password';
$db = new mysqli('localhost', 'root', 'root', 'rocketforce_blog');

    $result = $db->query("SELECT * FROM users WHERE user_name = '$username' AND password = '$password'");
    $row = $result->num_rows;
    $cnt = count($row);
    echo $cnt;
//=======================================================================================
    function user_exists($username, $password)
    {
        $result = $db->query("SELECT * FROM users WHERE user_name = '$username' AND password = '$password'");
        $row = $result->num_rows;
        $cnt = count($row);
        return $cnt;
    }
    echo user_exists($username, $password);
?>

变量$db在这个函数的作用域中是未知的。如果您希望在此函数中知道它,则必须将$db作为参数传递给该函数。如

function user_exists($db, $username, $password)
{
   $result = $db->query("SELECT * FROM users WHERE user_name = '$username' AND password = '$password'");
    $row = $result->num_rows;
    $cnt = count($row);
    return $cnt;
}
echo user_exists($db, $username, $password);

或者将全局变量$db导入到函数的作用域中。像这样:

function user_exists($username, $password)
{
   global $db;
   $result = $db->query("SELECT * FROM users WHERE user_name = '$username' AND password = '$password'");
    $row = $result->num_rows;
    $cnt = count($row);
    return $cnt;
}
echo user_exists($username, $password);

第一个是更好的一个,因为你可以使用类型提示,传递不同的连接等…