クエリ結果に問題があります。 getSales()
関数は初めて呼び出されたときにうまく機能します。再度呼び出されると、クエリは結果を生成しません。PDO - 結果を返さないクエリ
abstract class Reporting {
protected function connect() {
try {
$this->dbh = PDOConnection::getInstance();
if (!$this->dbh instanceof PDO) {
throw new CustomException('Unable to connect to database');
}
}
catch (CustomException $e) {
echo $e;
}
}
}
class TenMinuteSales extends Reporting {
protected $date;
public function __construct($date) {
$this->date = new DateTime($date);
$this->date = $this->date->format('Y-m-d');
}
public function beginReport() {
parent::connect();
}
public function getSales($meridiem, $date) {
try {
$statement = "SELECT directory.location, IFNULL(sales.daily_sales,0.00) AS sales, IFNULL(sales.cover_counts,0) AS covers
FROM t_directory directory
LEFT JOIN v_sales_all sales
ON sales.site_id = directory.site_id
AND sales.business_date = :date
AND sales.meridiem = :meridiem
ORDER BY directory.site_id ASC
LIMIT :totalLocations";
$sth = $this->dbh->prepare($statement);
$sth->bindParam(':date', $date, PDO::PARAM_STR);
$sth->bindParam(':meridiem', $meridiem, PDO::PARAM_STR);
$sth->bindParam(':totalLocations', $this->totalLocations, PDO::PARAM_INT);
$sth->execute();
switch ($meridiem) {
case 'AM':
$this->amSales = $sth->fetchAll(PDO::FETCH_ASSOC);
return $this->amSales;
case 'PM':
$this->pmSales = $sth->fetchAll(PDO::FETCH_ASSOC);
return $this->pmSales;
}
}
catch (CustomException $e) {
echo $e;
}
}
$tms = new TenMinuteSales($date);
$tms->beginReport();
$amSales = $tms->getSales('AM', $date);
$pmSales = $tms->getSales('PM', $date);
私はAMまたはPM販売数のためgetSales()
を呼び出し、関数が正常にデータを返します。ここではコードの小さな塊です。私はそれを2回目に呼び出すと、関数はデータを返しません。結果や何かをそれらの行に沿って解放する必要があるかどうかはわかりません。私はunset($sth)
と$sth->closeCursor()
を試しましたが、どれも私の問題を解決していないようです。私の問題を解決する助けがあれば大歓迎です。詳細が必要な場合はお知らせください。
「$ this-> totalLocations」は定義されておらず、 – Wrikken
私はそれが設定されているコードを含んでいませんでした。この質問の目的のために。 '$ this-> totalLocations' = 20 – Brett
あなたの問題とは関係ありませんが、try/catchを乱用しているようです。そのレベルに何も投げられないので、getSales()のキャッチは起こりません。 – Kenaniah