MySQL:mysqli_fetch_array() [重复]

Posted

技术标签:

【中文标题】MySQL:mysqli_fetch_array() [重复]【英文标题】:MySQL: mysqli_fetch_array() [duplicate] 【发布时间】:2017-12-22 23:25:09 【问题描述】:

如何在同一张表中对这3个查询使用mysqli_fetch_array()?或者如何将这 3 个查询变成 1 个查询?

SELECT clinic,AVG(rating) FROM review GROUP BY clinic ORDER BY clinic
SELECT clinic,COUNT(rating) AS die FROM review WHERE rating = 1 GROUP BY clinic
SELECT clinic,COUNT(rating) AS normal FROM review WHERE rating = 7 GROUP BY clinic

【问题讨论】:

【参考方案1】:

您可以使用case 表达式将最后两个查询中的条件移动到计算的表达式中。 count 跳过 nulls,所以只需使用一个表达式,它只返回你想要计算的条件:

SELECT   clinic, 
         AVG(rating),
         COUNT(CASE rating WHEN 1 THEN 1 END) AS die,
         COUNT(CASE rating WHEN 7 THEN 1 END) AS normal
FROM     review
GROUP BY clinic 
ORDER BY clinic

【讨论】:

哇,非常感谢 ^.^ 我在 google 和 youtube 上搜索了 5 个小时,但找不到方法。【参考方案2】:

您可以使用mysqli::multi_query。例如,

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

/* 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的整个文档提供的链接。

祝你好运!

【讨论】:

恕我直言,多查询几乎从来都不是正确的解决方案。仅仅为每个查询单独调用mysqli_query() 并没有什么好处,而且只会让获取结果变得更加复杂。 是的,但很高兴知道多查询是什么样的 ^.^

以上是关于MySQL:mysqli_fetch_array() [重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP mysqli_free_result()与mysqli_fetch_array()函数

为啥 mysqli_fetch_array() 返回数组大小的两倍? [关闭]

mysqli_fetch_array 未更新

如何修复 mysqli_fetch_array?我使用 php、mysqli 和 html

mysqli_fetch_array() 期望参数 1 为 mysqli_result,布尔值在 [重复]

mysqli_fetch_array():参数 #1 必须是 mysqli_result 类型。如何处理mysqli问题?