@Pyhon3x

Почему переменная в функции NULL?

Код:

DataBase.php:
<?php
  //use Monolog\Logger;
  //use Monolog\Handler\StreamHandler;
  /**
   * Класс используемый для Базы Данных
   * 2020-09-27...
   */
  class DataBase_class {

    function __construct() { // Метод-Конструктор для подключения к Базе Данных
      // create a log channel
      //$log = new Logger('DB-Service_files');
      //$log->pushHandler(new StreamHandler('/Test-Server/AUTH-2.5/logs/DB-Service_files.log', Logger::WARNING));

      $dsn = 'mysql:host=localhost;dbname=tsecret1_test-server;';
      $opt = [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false,
      ];

      try {
        $pdo = new PDO($dsn, 'tsecret1_TEST', 'r7Pz&***e6mx', $opt);
      } catch (PDOException $e) {
        //$log->error($e->getMessage(), (int)$e->getCode());
        throw new PDOException($e->getMessage(), (int)$e->getCode());
      }
    }  // --Метод-Конструктор для подключения к Базе Данных--

    function DB_query($DB_query, $params = null) { // Метод для запроса к Базе Данных
      echo var_dump($this->$DB_query);
      /*try {
        $query = $pdo->prepare($DB_query);
        $query->execute($params);

        return $query;
      } catch (Exception $e) {
        //$log->error('Ошибка запроса - DB_query');
        throw new Exception('Ошибка запроса');
      }*/


    }// --Метод для запроса к Базе Данных--
  }

test.php:
<?php
  require_once 'DataBase.php';

  $DB = new DataBase_class();

  $DB_query = "UPDATE `Users` SET `email_verified`=1 WHERE `ID`=:ID";
  $params = [
    "ID" => '2'
  ];

  $query = $DB->DB_query($DB_query, $params);
  //var_dump($query);



Почему переменная $DB_query в функции NULL?
Спасибо!
  • Вопрос задан
  • 110 просмотров
Решения вопроса 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
Про null уже объяснили, а я напишу про другую глупость.
из DB_query надо убрать try catch со всеми причиндалами.

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

Поэтому метод должен выглядеть так
function DB_query($DB_query, $params = null) { 
        $query = $this->pdo->prepare($DB_query);
        $query->execute($params);
        return $query;
    }

больше ничего не нужно
Ответ написан
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
вместо $this->$DB_query надо $DB_query
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
потому что метод возвращает void
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽