当我在函数内使用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);
第一个是更好的一个,因为你可以使用类型提示,传递不同的连接等…