我是php的新手,并选择坚持使用PDO格式。我已经能够建立一个可行的注册和登录系统,但是我面临的挑战是从数据库中获取数据,该数据将在我创建的用户个人资料页面的其他页面中使用。我已经尝试了所有可以在Internet上获得的所有示例和方法,但是都没有用,或者我不知道如何使用它,我想在其中插入变量的地方仍然为空。 我能够获取的唯一获取功能将选择所有行,例如,如果是电子邮件,它将获取数据库中所有未必应该存在的已注册电子邮件。该电子邮件应仅用于打开其个人资料的用户。 这是代码。我相信有人会帮我解决这个问题。谢谢
$data = $pdo->query("SELECT * FROM databaseName")->fetchAll();
//this one is in the body where i want to insert the email
foreach ($data as $row) {
echo $row['email']."<br />\n";
}
我尝试了所有我对php的一点了解,但无济于事。如果我决定使用其他任何一个,则不会显示任何内容。
答案 0 :(得分:0)
您可以尝试其他替代方法以达到相同的效果,
$stmt = $pdo->query('SELECT * FROM databasetable');
while ($row = $stmt->fetch())
{
echo $row['email'] . "\n";
}
答案 1 :(得分:0)
如果您只对返回结果中的电子邮件感兴趣,那么我将执行以下操作:
$stmt = $pdo->query('SELECT `email` FROM databasetable');
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
echo $row['email'] . "\n";
}
或
$stmt = $pdo->query('SELECT `email` FROM databasetable');
$data = $stmt->fetchAll(PDO::FETCH_ASSOC))
foreach($data as $row)
{
echo $row['email'] . "\n";
}
如果您要检查返回的数据是否良好,我将添加“ print_r($data);
”。
答案 2 :(得分:0)
您可以只获取结果的第一个元素。
$stmt = $pdo->query('SELECT `email` FROM databasetable LIMIT 1');
$data = $stmt->fetchAll(PDO::FETCH_ASSOC)[0];
或使用fetch()
$stmt = $pdo->query('SELECT `email` FROM databasetable LIMIT 1');
$data = $stmt->fetch(PDO::FETCH_ASSOC);
我还在查询的末尾添加了一个LIMIT,因此您不会获取不需要的数据。
答案 3 :(得分:0)
除非我遗漏了某些东西,否则肯定您应该在SQL查询中指定一个位置,为什么要获取整个数据库并遍历整个数据库,直到找到所需的电子邮件为止?
当您重定向登录的用户时,您必须(或者如果不是,则应该)传递有关该用户的信息,例如在会话中设置userid。然后,您可以使用它通过查询select email from table where userid = :userid
创建更有用的配置文件数据-然后,在获取结果时,您将拥有所需的数据。
自然,我无法在不知道您的结构的情况下编写确切的查询,但是每次获取整个表中的数据都是无法扩展的