生成复杂报告的良好实践(MySQL / PHP)

时间:2012-04-12 08:03:33

标签: php mysql database-design

PHP mysql_query函数不允许多个查询,这限制了最大报表复杂性。如果我需要生成非常复杂的报告,需要多个临时表和多个查询,那么最佳实践是什么?

更新:我的问题更多是关于如何在PHP中使用MySQL复杂查询,如果mysql_query只允许单个查询?

3 个答案:

答案 0 :(得分:1)

  

PHP mysql_query函数不允许多个查询,这限制了最大报告的复杂性

根据我的经验,它没有。

临时表在会话期间可用 - 如果您想使用临时表来编写报表(因为子查询的可用性,它们不是必需的),那么'错了......

 mysql_query('CREATE TEMPORARY TABLE workset ....
 mysql_query('INSERT INTO workset (...) SELECT ....
 mysql_query('UPDATE workset......
 ....
 mysql_query('SELECT * FROM workset....

或使用存储过程创建物化视图?

答案 1 :(得分:1)

如果您正在寻找执行多个查询,那么为什么不使用mysqli_multi_query 从PHP手册中取出的示例:     

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query  = "SELECT CURRENT_USER();";
$query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";

/* execute multi query */
if ($mysqli->multi_query($query)) {
    do {
        /* store first result set */
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_row()) {
                printf("%s\n", $row[0]);
            }
            $result->free();
        }
        /* print divider */
        if ($mysqli->more_results()) {
            printf("-----------------\n");
        }
    } while ($mysqli->next_result());
}

/* close connection */
$mysqli->close();
?>

的引用: mysqli_multi_query

答案 2 :(得分:0)

您对“最大报告复杂性”的意思是什么?现在我使用SSRS。但这是微软的解决方案。我用谷歌搜索Reportico Tools可以帮助你。作为替代方案,ZF(例如)包含用于与数据库交互的巨大功能。可能this article可以帮助你。