【问题标题】:issue with mysqli query when I use the function to run the query当我使用该函数运行查询时出现 mysqli 查询问题
【发布时间】:2014-06-18 21:22:18
【问题描述】:

为什么在函数中使用 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);

?>

【问题讨论】:

标签: php mysqli


【解决方案1】:

The variable $db is not known in the scope of this function。如果您希望在此函数中知道它,则必须将 $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);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多