【问题标题】:How do i output correctly data from a database with php?如何使用 php 从数据库中正确输出数据?
【发布时间】:2018-12-28 01:16:09
【问题描述】:

我有一个名为 user 的数据库,其中包含 3 列:first_name、last_name 和 email。在 html 中,我有一个表单,提示用户输入一些数据并存储在数据库中。在我的 index.php 页面中,我有一个表格显示所有输入的名字,当您按下名称时,它会打开一个名为 output.php 的新页面,其中包含所有信息作为输出。问题是,当我按下名称时,它会显示数据库中所有数据的结果,而不是关于我按下的名称的信息。当我添加它在数据库中工作的信息时。 如何正确输出数据? output.php 的代码是:

output.php 的代码是:

$stmt = $pdo->query('SELECT first_name, last_name, email FROM user ');
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo("<p>First Name:".$row["first_name"]." ");
echo("</p><p>Last Name:".$row["last_name"]." "); 
echo("<p>Email:".$row["email"]." ");
}

【问题讨论】:

  • 您提到了表单和用户输入,您发布的内容不支持您的要求。
  • 您应该为要显示的用户的查询过滤添加一个WHERE 子句。
  • @FunkFortyNiner 我只是没有在这里包含所有的 html 代码,如果我添加每个页面的整个代码会有帮助吗?
  • @stickybit 如何根据我要显示的用户添加 WHERE 子句?我的意思是我可以添加一个 user_id 并添加 WHERE 子句过滤,但它如何根据我输入的内容输出结果?如果我不知道 id,因为它可能是一个有很多用户的大型数据库,所以我想输出特定 id 的信息,那么如何在 php 中完成呢?在 mysql 中会很容易。
  • 您说您有一个显示所有用户的列表。您应该有 ID,需要将其传递到详细信息视图。

标签: php mysql forms output


【解决方案1】:

如上所述,您需要一个 WHERE 子句,并且由于您已经注意到您的用户表中只有 3 列,您将需要添加一个自动递增列(命名为 uidid 或 @987654324 @...etc),然后将该 id 从表单中传递给您的 sql 语句 OR(不是那么好,但会起作用)如果您的电子邮件地址是唯一的,您可以使用它们作为您的标识符。如果用户可以在您的用户表中多次使用相同的电子邮件地址,那么您必须创建一个新列。无论如何,我建议您创建一个id 专栏,但要使其发挥作用,您可以尝试以下操作:

基于你的 PHP 示例

<?php if(!empty($_POST['email'])):
    # Trim the input, to remove spaces/tabs
    $email = trim($_POST['email']);
    # Make sure this is an email address
    if(!filter_var($email, FILTER_VALIDATE_EMAIL)):
        # You don't have to die, but I am doing for quickness/ease
        die('Invalid email.');
    else:
        $query = $pdo->prepare("SELECT * FROM users WHERE email = ?");
        $query->execute([$email]);
        while($row = $query->fetch(PDO::FETCH_ASSOC)): ?>

            <p>FIRST: <?php echo $row['first_name'] ?></p>
            <p>LAST: <?php echo $row['last_name'] ?></p>
            <p>EMAIL: <?php echo $row['email'] ?></p>

        <?php endwhile ?>

    <?php endif ?>

<?php else: ?>

    <p>Type in the email you are searching for.</p>
    <form method="post" action="#">
        <input type="text" name="email" placeholder="Email address" />
        <input type="submit" value="Select" />
    </form>

<?php endif ?>

如果你有一个 id,并输出一个用户列表,你可以在他们的 id 上添加一个查询以使用WHERE on:

<a href="/?action=edit&id=<?php echo $row['id'] ?>">EDIT <?php echo $row['first_name'].' '.$row['last_name'] ?></a>

【讨论】:

    猜你喜欢
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多