Как получить только одно значение для данных, которые я выбрал из базы данных, используя функцию извлечения - PullRequest
0 голосов
/ 12 апреля 2019

Я новичок в php и решил придерживаться формата PDO.Мне удалось настроить работоспособную систему регистрации и входа в систему, но моей задачей является получение данных из моей базы данных, которые будут использоваться на другой странице созданной мной страницы профиля пользователя.Я перепробовал все многочисленные примеры и методы, которые мне удалось найти в Интернете, но они не работают, или, скорее, я не знаю, как его использовать, где я хочу вставить переменную, все равно будет пустым.Единственная функция извлечения, которую я смог получить, выберет всю строку, например, если это электронная почта, она выберет все зарегистрированные электронные письма в базе данных, чего не должно быть.Адрес электронной почты должен быть только для пользователя, профиль которого открыт.Вот коды.Я уверен, что кто-то поможет мне понять это.Спасибо

    $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 голосов
/ 13 апреля 2019

Если я что-то упустил, то, конечно, вы должны указывать, где в вашем SQL-запросе, почему вы получаете всю базу данных и просматриваете ее, пока не найдете нужный адрес электронной почты?

Когда вы перенаправляете вошедшего в систему пользователя, вы должны (или если нет, то должны) передать что-то о пользователе, например, установить идентификатор пользователя в сеансе. Затем вы можете использовать это для создания более полезных данных профиля с запросом, который говорит select email from table where userid = :userid - тогда, когда вы получите результат, у вас будут необходимые данные.

Естественно, я не могу написать точный запрос, не зная вашей структуры, но каждый раз получать данные из целых таблиц невозможно.

0 голосов
/ 12 апреля 2019

Если вас интересует только электронная почта из возвращенных результатов, я хотел бы сделать следующее:

$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);".

0 голосов
/ 12 апреля 2019

Вы можете просто взять первый элемент результатов.

$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 в конце вашего запроса, чтобы вы не получали ненужные данные.

0 голосов
/ 12 апреля 2019

Вы можете попробовать другую альтернативу, чтобы достичь того же,

$stmt = $pdo->query('SELECT * FROM databasetable');
while ($row = $stmt->fetch())
{
    echo $row['email'] . "\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...