Как получить результаты из оператора подготовки PDO

Я использую оператор подготовки PDO для выбора результата.

Мой index.php:

include('operations.php');
$userprofileobj = new operations();
if (isset($_SESSION['user_email']))
{
$results = $userprofileobj->verify_user('account',$_SESSION['user_email'])->fetch(PDO::FETCH_ASSOC);

echo $results['username'];
}

Мой файл operations.php:

<?php
include('userclass.php');
class operations extends userclass{
    public function verify_user($table_name,$user_email)
{
    $stmt = $this->con->prepare("select * from ".$table_name." where username = :user_email");

    $stmt->execute([
        ':user_email' => $user_email,
    ]);

return $stmt->fetchAll(PDO::FETCH_ASSOC);

}
}

Я пытаюсь сопоставить электронную почту, и результат должен быть получен в index.php. Но у меня ошибка Неустранимая ошибка: вызов функции-члена fetchColumn () с логическим значением в файле operations.php в строке 84.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
1 298
1

Ответы 1

$result = $this->con->prepare("select * from ".$table_name." where username = :user_email");

$result = $result->execute(..)

Вы перезаписываете $ result. $ This-> con-> prepare (..) устанавливает $ result как выражение PDO (см. http://php.net/manual/en/pdo.prepare.php). Объект PDO Statement имеет метод -> execute (...), который возвращает логическое значение (true / false), а также метод -> fetchColumn (). Когда вы выполняете свой execute (), вы перезаписываете свой объект оператора PDO результатом выполнения execute (), который является только логическим и не имеет вообще никаких методов. Вот почему $ result не имеет метода -> fetchColumn ().

это не имеет значения

ArtisticPhoenix 29.09.2018 08:00

Спасибо за ответ .. но какое решение.

cloud soft 29.09.2018 08:03

Самый простой способ - превратить $ result = $ result-> execute (..) в $ result-> execute (..), однако @ArtisticPhoenix более подробно описывает свой ответ.

trollboy 29.09.2018 08:05

Это не самое простое. Это всего лишь одна из вещей, которые необходимо сделать. Изменение этого не меняет того факта, что они возвращают $result, который не является «результатом» операции fetch *. Другими словами, исправление, которое возвращало бы объект Statement после того, как указатель перемещается за первую строку, и вы не можете перемотать курсор для PDO. Кроме того, использование fetchColumn, когда запрос не имеет ограничений и извлекает все поля, означает, что либо запрос не является оптимальным, либо используется неправильный метод выборки.

ArtisticPhoenix 29.09.2018 08:29

Другие вопросы по теме