作为类函数一部分的SQL查询中的PHP变量未按预期工作

作为类函数一部分的SQL查询中的PHP变量未按预期工作,php,mysqli,Php,Mysqli,我试图从SQL数据库中提取与输入年份和月份匹配的数据。下面是SQL查询的代码 <?php class SelectAMonthGet extends ConnectDB { var $year; var $month ; function __construct($n){ $this->year = $_POST['year']; $this->month = $_POST['Ana

我试图从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;
                }
        }

    }

    ?>

代码运行良好。当我提到变量时,我不知道为什么代码不起作用。有人能在这里指导我吗?

在您的代码中,
$year
$month
被声明为类变量,因此您可以使用
$this->
访问它们(请参阅构造函数)

但是在查询中的函数
SelectAMonthGetData
中,您使用它们时没有
this
,因此无法访问它们。要解决此问题,您可以使用:

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


您应该使用年和月作为$this->year aτd this->month的可能副本查看副本<代码>$year和
$month
是构造函数的本地代码。您需要将它们声明为类变量,并使用@splash58所说的
$this->year
。year$year和$month是局部变量。在执行查询之前,首先给它们赋值。请共享
var\u dump($sql)的输出将此代码放在查询行字符串(87)“选择*自wp_myexpenses,其中年(日期)=''和月(日期)=''按日期排序,id“您的查询是什么?你是否按照我在帖子中的建议更新了它们?你的帖子是否真的得到了值,
var\u dump($\u POST)的输出是什么将此代码放入构造函数。数组(2){[“操作”]=>string(18)“分析数据摘要”[“分析选项”]=>string(14)“选择一个月”}看起来我这里有问题
$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";