如何使用提取功能仅从数据库中获取数据的一个值

时间:2019-04-12 14:15:29

标签: php jquery pdo

我是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的一点了解,但无济于事。如果我决定使用其他任何一个,则不会显示任何内容。

4 个答案:

答案 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创建更有用的配置文件数据-然后,在获取结果时,您将拥有所需的数据。

自然,我无法在不知道您的结构的情况下编写确切的查询,但是每次获取整个表中的数据都是无法扩展的