PHP mysql_query 函数不允许多个查询,这限制了最大的报告复杂性。如果我需要生成非常复杂的报告,需要多个临时表和多个查询,那么最佳实践是什么?
更新:我的问题更多关于如何在 PHP 中使用 MySQL 复杂查询,如果 mysql_query 只允许单个查询?
PHP mysql_query 函数不允许多个查询,这限制了最大的报告复杂性。如果我需要生成非常复杂的报告,需要多个临时表和多个查询,那么最佳实践是什么?
更新:我的问题更多关于如何在 PHP 中使用 MySQL 复杂查询,如果 mysql_query 只允许单个查询?
PHP mysql_query 函数不允许多个查询,这限制了最大报告复杂度
不是根据我的经验,它没有。
临时表在会话期间可用 - 如果您想使用临时表来撰写报告(由于子查询的可用性,它们不是必需的)有什么问题......
mysql_query('CREATE TEMPORARY TABLE workset ....
mysql_query('INSERT INTO workset (...) SELECT ....
mysql_query('UPDATE workset......
....
mysql_query('SELECT * FROM workset....
或者使用存储过程来创建物化视图?
好吧,如果您正在寻找执行多个查询,那么为什么不使用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();
?>
您所说的“最大报告复杂性”是什么意思?现在我使用SSRS。但这是微软的解决方案。我在 Google 上搜索Reportico 工具可能会对您有所帮助。作为替代方案,ZF(例如)包含用于与数据库交互的巨大功能。也许这篇文章可以帮助你。