我正在尝试验证 PDO 中的登录,但它在函数内部时不起作用。我也尝试将 $db
添加到函数中,但没有帮助。无论发生什么,它都会回显“坏”,如果我将它从函数中删除,它可以使用完全相同的代码正常工作。这是全部内容:
function logIn($db)
{
try
{
$stmt = $db->prepare("SELECT COUNT(*) FROM users WHERE Username = :user AND Usernameclean = :userclean AND Password = :pass");
$stmt->bindParam(":user", $user);
$stmt->bindParam(":userclean", $userclean);
$stmt->bindParam(":pass", $pass);
$stmt->execute();
$status = (bool) $stmt->fetchColumn(0);
if ($status)
{
echo "good";
}
else
{
echo "bad";
}
}
catch (PDOException $e)
{
echo "There was a problem connecting to this database.";
$e->getMessage();
}
}
logIn($db);
最佳答案
您还必须将在函数内部使用的其他变量传递给该函数。
因此,正确的函数应该是:
function logIn($db, $user, $userclean, $pass)
{
try
{
$stmt = $db->prepare("SELECT COUNT(*) FROM users WHERE Username = :user AND Usernameclean = :userclean AND Password = :pass");
$stmt->bindParam(":user", $user);
$stmt->bindParam(":userclean", $userclean);
$stmt->bindParam(":pass", $pass);
$stmt->execute();
$status = (bool) $stmt->fetchColumn(0);
if ($status)
{
echo "good";
}
else
{
echo "bad";
}
}
catch (PDOException $e)
{
echo "There was a problem connecting to this database.";
$e->getMessage();
}
}
logIn($db, $user, $userclean, $pass);
关于php - PDO 在函数外工作,在函数内不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20692397/