MySQL变量和PDO

时间:2015-07-29 21:09:24

标签: php mysql pdo

我遇到了使用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的奇怪限制?

1 个答案:

答案 0 :(得分:0)

我不确定为什么这是一个问题,但我可以通过在上一个查询中将变量设置为默认值来获取数据。

  $var_query = $online_link->query('SET @dump = 0, @num_logins = 0, @prev_login = 0');

只要在主查询之前执行该操作,所有操作都应该如此。