PHP переменная в запросе SQL, которая является частью функции класса, не работает должным образом - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь получить данные из базы данных SQL, которые совпадают с вводом года и месяца. Ниже приведен код для SQL-запроса

 <?php

    class SelectAMonthGet extends ConnectDB {

    var $year;
    var $month ;

        function __construct($n){
            $this->year = $_POST['year'];
            $this->month = $_POST['AnalyzeEnterAreaMonth'];
    }


        function SelectAMonthGetData(){

            $sql = "SELECT * FROM wp_myexpenses WHERE YEAR(date) = '$year' AND MONTH(date) = '$month' order by date,id"; 

            $result = $this->connect()->query($sql);
            $numRows = $result->num_rows;

                if($numRows > 0) {

                    while ($row = $result->fetch_assoc()){

                    $data[] = $row;
                    }

                    return $data;
                }
        }

    }

    ?>

Функция connectdb содержит соединение с моей базой данных, и я расширяю эту функцию для этого запроса SQL. Но почему-то код не распознает переменные $ _POST $ year и $ month. Выше код не дает никакого результата.

Я пытался изменить запрос SQL на

$sql = "SELECT * FROM wp_myexpenses WHERE YEAR(date) = '2019' AND MONTH(date) = '1' order by date,id";

и код работает нормально. Не уверен, почему код не работает, когда я упоминаю переменную. Кто-нибудь может направить меня сюда?

1 Ответ

0 голосов
/ 08 января 2019

В вашем коде $year и $month объявлены как переменные класса, и, следовательно, вы можете получить к ним доступ, используя $this-> (см. Конструктор).

Но в вашей функции SelectAMonthGetData в вашем запросе вы используете их без this, и, следовательно, они не были доступны. Чтобы решить эту проблему, вы можете использовать:

$sql = "SELECT * FROM wp_myexpenses WHERE YEAR(date) = '$this->year' AND MONTH(date) = '$this->month' order by date,id";

Или

$year = $this->year; $month = $this->month;
$sql = "SELECT * FROM wp_myexpenses WHERE YEAR(date) = '$year' AND MONTH(date) = '$month' order by date,id";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...