浏览下面的代码。这应该检查数据库是否包含给定用户。如果是,它只返回true。如果没有,则返回false。
无论如何,无论数据库中是否存在用户和密码,由于某种原因它都不会评估为真! ! !
function databaseContainsUser($email, $password)
{
include $_SERVER['DOCUMENT_ROOT'].'/includes/db.inc.php';
try
{
$sql = 'SELECT COUNT(*) FROM wl_user
WHERE email = :email AND password = :password';
$s = $pdo->prepare($sql);
$s->bindValue(':email', $email);
$s->bindValue(':password', $password);
$s->execute("USE $dbname");
}
catch (PDOException $e)
{
$error = 'Error searching for user. ' . $e->getMessage();
include $_SERVER['DOCUMENT_ROOT'].'/includes/error.html.php';
exit();
}
$row = $s->fetch(PDO::FETCH_NUM);
if ($row[0] > 0)
{
return TRUE;
}
else
{
return FALSE;
}
}
任何帮助将不胜感激
答案 0 :(得分:0)
由于某种未知原因,您要传递"USE $dbname"
字符串来执行
删除该字符串。
此外,您正在尝试捕获异常,但显然不会告诉PDO抛出它们。 而你只是为了回应一条信息,这是一个很大的禁忌。 我最近在this answer
中解释了正确的方法如果你的问题不同,你必须问(或者更好 - 谷歌这个问题) 有关正确的连接选项,请参阅PDO tag wiki,包括数据库选择和错误报告。
答案 1 :(得分:-1)
试试这个
try
{
$pdo = new PDO('mysql:host=localhost;dbname=yourDbName;', 'root', '',
array(PDO::ATTR_PERSISTENT => true));
$sql = 'SELECT count(*) FROM user WHERE email = :email AND password = :password';
$s = $pdo->prepare($sql);
$s->bindValue(':email', $email);
$s->bindValue(':password', $password);
$s->execute();
}
这是本地服务器示例,只需将yourDbName更改为您的数据库名称即可。我只是在我的本地服务器上运行此代码,它正在运行。