【发布时间】:2015-05-07 13:35:18
【问题描述】:
我对 PHP 中的 PDO 相当陌生,我正在尝试制作一个简单的登录表单。我需要能够获取数据,但似乎无法使用 fetchColumn() 来实现,我需要检查用户和密码是否匹配。
$query = "SELECT * FROM administrator
WHERE user = :user
AND pass = :pass";
$res = $db->prepare($query);
$params = array("user" => $username, "pass" => $password);
$res->execute($params);
$num_rows = $res->fetchColumn(1);
if ($num_rows) {
$_SESSION['user'] = $num_rows['user'];
header('Location: .');
exit();
} else {
echo "Failure";
}
if (isset($_SESSION['user'])): ?>
<p>Hello, <?= $_SESSION['user']; ?>! This is admin content.</p>
<a href=".?p=logout">Logout</a>
<?php endif; ?>
使用此代码时,使用用户名adminuser,输出为:
"Hello, a! This is admin content."
什么时候应该:
"Hello, adminuser! This is admin content."
那么,当 fetchColumn() 函数已经执行时,如何获取数据呢?
【问题讨论】:
-
$num_rows是一个字符串,包含结果中的第一列,在本例中为'adminuser'。$num_rows['user']正在尝试访问该字符串中的字符,其中字符串'user'是索引。由于索引需要一个整数,'user'被强制转换为0,并且您最终检索到字符串中的第一个字符:adminuser][0]->'a'。