PHP中的MySQL存储过程空在PHPMyAdmin中工作

时间:2015-12-31 21:03:12

标签: php mysql stored-procedures pdo

我有以下存储过程。它在phpMyAdmin中工作正常,但是当我尝试使用PHP PDO库运行它时,我没有错误,只是一个空数组。

CREATE DEFINER=`root`@`localhost` 
PROCEDURE `get_gauge_values`(IN `maxdate`      TIMESTAMP,
                                    IN `dashboard_id` INT)
begin
  DECLARE finished BOOLEAN;

  DECLARE line_timestamp TIMESTAMP;

  DECLARE line_tagid INT;

  DECLARE line_name VARCHAR(50);

  DECLARE line_value VARCHAR(50);

  DECLARE cid CURSOR FOR
    SELECT Max(hd.timestamp),
           hd.tag_id
    FROM   dashboard_to_dashboard_lines ddl
           JOIN dashboard_lines dl
             ON dl.line_id = ddl.dashboard_line_id
           JOIN historical_data hd
             ON hd.tag_id = dl.gauge_tag_id
    WHERE  hd.timestamp <= maxdate
           AND ( dashboard_id = 0
                  OR ddl.dashboard_id = dashboard_id )
    GROUP  BY 2;

  DECLARE CONTINUE handler
  FOR NOT found
    SET finished=TRUE;

  SET finished=FALSE;

  DROP TABLE IF EXISTS gauge_values_temp;

  CREATE TABLE gauge_values_temp
    (
       name  VARCHAR(255),
       value VARCHAR(50)
    );

  open cid;

  START_LOOP:
LOOP
    FETCH cid INTO line_timestamp, line_tagid;
    IF finished <> false THEN
      LEAVE start_loop;
    ELSE
      INSERT INTO gauge_values_temp
                  (name,
                   value)
      SELECT ol.name,
             hd.value
      FROM   dashboard_lines dl
             JOIN operation_lines ol
               ON ol.line_id = dl.line_id
             JOIN historical_data hd
               ON hd.tag_id = dl.gauge_tag_id
      WHERE  dl.gauge_tag_id = line_tagid
             AND hd.timestamp = line_timestamp;
    end IF;
  end LOOP;

  close cid;

  SELECT *
  FROM   gauge_values_temp;
end 

我在PHP中用于尝试提取数据的代码如下:

try {
    $sql = "CALL get_gauge_values('2015-12-28 09:00:00','1')";
    $q = $link->query($sql);
    $q->setFetchMode(PDO::FETCH_ASSOC);
} catch (PDOException $pe) {
    die("Error occurred:" . $pe->getMessage());
}    
while ($r = $q->fetch()) {
    echo 'Row returned<br />';
}
exit;

我很困惑为什么它会在phpMyAdmin中返回结果集,但在浏览器中使用下面的PHP代码运行它会返回0行。当print_r($ q)是Array()...

时,我得到的一切

0 个答案:

没有答案