@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
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы