【发布时间】:2021-01-23 20:00:34
【问题描述】:
我正在尝试将变量从一种方法传递给另一种方法。
我正在从事件表中获取日期,以便以另一种方法构建动态查询。
class Player extends Database {
private $start_date;
private $end_date;
private $sumCase;
protected function getEvents() {
$sql = "SELECT * FROM `events`";
$stmt = $this->connect()->prepare($sql);
$stmt->execute();
$results = $stmt->fetchAll();
$event_arr = array();
foreach($results as $result) {
$event_name = $result['event_name'];
$this->start_date = $result['start_date'];
$this->end_date = $result['end_date'];
$this->sumCase[] = "SUM(CASE WHEN date BETWEEN $this->start_date AND $this->end_date THEN 1 ELSE 0 END) '$event_name'";
$dateBetween[] = "date BETWEEN $this->start_date AND $this->end_date";
array_push($event_arr, array(
"name" => $result['event_name'],
"start" => $result['start_date'],
"end" => $result['end_date'],
));
}
return print_r($this->sumCase);
}
这将毫无问题地返回我的 sumCase 数组,我现在正尝试以另一种方法访问此 sumCase 数组以构建查询:
protected function getPlayerEvents() {
$sql = "SELECT count(chalID) as total, ";
$sql .=' '.implode(', ', $this->sumCase);
$sql .="from (SELECT * FROM times where ("; //ignore this
$sql .="date BETWEEN 159310659 AND 1593538594 OR date BETWEEN 1693538594 AND 1793538594"; //ignore this
$sql .=") AND plaID = 1 group by chalID) A"; //ignore this
$stmt = $this->connect()->prepare($sql);
$stmt->execute();
$results = $stmt->fetchAll();
echo $this->sumCase; //returns null, how do I pass variables between methods?
}
当我在此方法中回显我的 sumCase 数组时,它返回 null。如何通过 getEvents 方法访问 sumCase 数组的值?
【问题讨论】:
-
您是否打算在为
$sumCase赋值时使用方括号将其放入数组中?这会影响你回应它的能力。 -
请提取minimal reproducible example 并将其包含在您的问题中。另请注意,尚不清楚为什么将其存储在成员中并返回其格式为
print_r()的内容。作为这里的新用户,也请带上tour并阅读How to Ask。 -
您是否在同一对象上下文中使用 $sumCase 变量来调用两个函数?
-
@MartinZeitler 是的,提问者还没有清楚他的查询中的所有内容
-
使用属性时不需要
return任何东西。