【发布时间】:2012-04-17 16:32:16
【问题描述】:
我只有一个文本字段,用户可以在其中输入用户名或电子邮件地址以重置密码。
首先是代码:(我只包含了我知道问题所在的代码)。
try {
// connect to database
$dbh = sql_con();
// prepare query
$stmt = $dbh->prepare("
SELECT COUNT(*)
FROM
users
WHERE
user_login = :username
OR
user_email = :email
");
// execute query
$stmt->execute(array(':username' => $username_email, ':email' => $username_email));
if ($stmt->fetchAll() > 0) {
// something was found
// just echoing at the moment until i figure out what i am doing wrong
echo 'i found something';
exit;
} else {
// nothing found
echo 'i found nothing';
exit;
}
}
catch (PDOException $e) {
ExceptionErrorHandler($e);
require_once($footer_inc);
exit;
}
不知道我做错了什么,可能是一些非常愚蠢的事情,但是当我输入一个我知道不在数据库中的用户名或电子邮件地址时,它仍然echoes out 我发现了一些东西 .
我做错了什么?
我打算使用rowCount,但正如 PHP 手册所建议的那样:
PDOStatement::rowCount()返回受相应 PDOStatement 对象执行的最后一个DELETE、INSERT或UPDATE语句影响的行数。
如果关联PDOStatement执行的最后一条 SQL 语句是SELECT。
语句,某些数据库可能会返回该语句返回的行数。
但是,不能保证所有数据库都具有此行为,并且不应依赖于可移植应用程序。
所以基本上 PHP 手册是说我应该在执行真正的查询之前执行Count(*) 然后处理结果。
【问题讨论】: