【发布时间】:2013-05-28 16:51:55
【问题描述】:
我承认 php 对我来说是一门新语言。
现在我可以让这些中的每一个单独工作。在我的准备查询中 SELECT * FROM... 将允许我的 PDO fetch assoc while 循环工作,但随后 fetch 列不起作用。然后我使用 SELECT COUNT(*) 我的 fetch 列有效,但我的 fetch assoc 却没有。
那么这附近有没有这样两个都可以工作的地方?因为我需要 fetch 列以整数值(1 或 0)的形式返回有多少行,以确定用户是否输入了登录信息。但是我需要在那里获取列来返回在我的数据库表的用户名部分中输入的字符串值。这样我就可以使用这些信息来检查它与用户输入的内容是否相符,以验证用户和密码。
谢谢,这是我的代码。如果您需要更清楚地解释,我会去。
<?php
$config['db'] = array(
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'inb271assignment'
);
$pdo = new PDO('mysql:host=' . $config['db']['host'] . '; dbname=' . $config['db']['dbname'], $config['db']['username'], $config['db']['password']);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try
{
$pdo->beginTransaction();
$username = $_POST['Username'];
$password = $_POST['Password'];
//Nicholas will be $dbUsername when fetch is working correctly.
$databaseusername = Nicholas;
if ($username&&$password)
{
$result = $pdo->prepare("SELECT COUNT(*) FROM members WHERE Username=?");
$result->execute(array($databaseusername));
$row = $result->fetchColumn();
if ($row!=0) {
while ($rows = $result->fetch(PDO::FETCH_ASSOC)) {
$dbUsername = $rows['Username'];
}
echo $dbUsername;
}
else
die("That user doesn't exist");
}
$pdo->commit();
}
catch(PDOException $pe)
{
echo($pe->getMessage());
}
?>
所以目前我在那里有 SELECT COUNT(*)。因此,如果我在页面上的表单中输入用户名和密码,它将返回为 !=0 允许 while 循环工作。如果我有 SELECT *,while 循环通常可以工作。但是因为我不需要,因为我不需要计数。所以我无法从数据库中检索到我需要的信息。
【问题讨论】:
-
为什么需要
count(*)? -
如果我不包含它,那么 fetchColumn() 不起作用。所以目前我可以得到我需要展示的两件事中的一件。只是不能同时。现在打算试试 Fabio 的方法。