我遇到了使用MySQL变量的PDO查询问题。我已在MySQL工作台中执行此查询,以及直接通过MySQL常规日志处理和存储的内容并获得结果。当它通过PDO运行时,我的rowCount()返回0.
我已经检查过错误日志并尝试/捕获PDOException,但没有任何内容。我还在使用带有PDO的MySQL变量时稍微挖了一下,但是根据我发现的那些不应该有任何问题。
以下是查询:
$mobile_query = $online_link->prepare('SELECT
T.full_date,
T.login_count
FROM (
SELECT
M.Process_Date as full_date,
M.Nbr_Success_Sigon,
@dup := CASE WHEN @prev_login <> M.Nbr_Success_Sigon THEN 1 ELSE (@dup+1) END AS reset,
@num_logins := (M.Nbr_Success_Sigon - @prev_login) as login_count,
@prev_login := M.Nbr_Success_Sigon
FROM mobile_tran M
WHERE
M.CIS_No = :cis AND
M.Process_Date >= :start_date + INTERVAL -' . $date_interval . ' DAY AND
M.Process_Date < :start_date
)as T
WHERE T.reset = 1 AND T.login_count > 0');
try {
$mobile_query->execute(array(':cis'=>$cis, ':start_date'=>$start_date));
} catch(PDOException $e) {
$logger->error($e->getMessage());
}
数据集是每天有一个条目的滚动登录计数。我只想返回计数发生变化的日子。
例如:
07-01 - 0
07-02 - 0
07-03 - 1 (<- I want to return this record)
07-04 - 1
07-05 - 3 (<- I want to return this record)
在使用MySQL变量时,是否存在某种对PDO的奇怪限制?
答案 0 :(得分:0)
我不确定为什么这是一个问题,但我可以通过在上一个查询中将变量设置为默认值来获取数据。
$var_query = $online_link->query('SET @dump = 0, @num_logins = 0, @prev_login = 0');
只要在主查询之前执行该操作,所有操作都应该如此。