Как правильно вывести данные из базы данных с помощью php? - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть база данных с таблицей под названием 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"]." ");
}

1 Ответ

0 голосов
/ 28 декабря 2018

Как уже отмечалось, вам нужно предложение WHERE, и, поскольку вы отметили, что в вашей пользовательской таблице есть только 3 столбца, вам нужно будет либо добавить автоматически увеличивающийся столбец (с именем uid или id или * 1004).* ... и т. д.), а затем передайте этот идентификатор в свой оператор sql из формы ИЛИ (не так хорошо, но будет работать), если ваши адреса электронной почты уникальны, вы можете использовать их в качестве идентификатора.Если пользователь может использовать один и тот же адрес электронной почты в вашей пользовательской таблице более одного раза, вам нужно создать новый столбец.В любом случае, я бы порекомендовал сделать столбец 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 ?>

Если выЕсли у вас есть идентификатор, и выведите список пользователей, вы можете указать их идентификатор как запрос, чтобы использовать WHERE on:

<a href="/?action=edit&id=<?php echo $row['id'] ?>">EDIT <?php echo $row['first_name'].' '.$row['last_name'] ?></a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...