La variable PHP en la consulta SQL que es parte de la función de clase no funciona como se esperaba

acr

Estoy tratando de extraer datos de la base de datos SQL que coinciden con el año y el mes de entrada. A continuación se muestra el código para la consulta 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;
                }
        }

    }

    ?>

Una función connectdb contiene mi conexión de base de datos y estoy ampliando esa función para esta consulta SQL. Pero de alguna manera, el código no reconoce las variables $ _POST $ año y $ mes. El código anterior no da ningún resultado.

Traté de cambiar la consulta SQL a

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

y el código funciona bien. No estoy seguro de por qué el código no funciona cuando menciono la variable. ¿Alguien puede guiarme aquí?

Tejashwi Kalp Taru

En su código $yeary $monthse declaran como una variable de clase y, por lo tanto, puede acceder a ellos usando $this->(ver constructor).

Pero en su función SelectAMonthGetDataen su consulta, los está usando sin ellos thisy, por lo tanto, no eran accesibles. Para resolver este problema, puede utilizar:

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

O

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

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados