1

我已经设法在这里使用其他问题来找到我的表中的中值结果,但现在我不确定如何打印这个结果。

这是我的PHP:

$query = "SELECT x.price 
          FROM price_pints x, price_pints y 
          GROUP BY x.price 
          HAVING SUM(    
                       SIGN( 
                             1 - SIGN( y.price - x.price ) 
                           ) 
                    ) / COUNT( * ) > .5 
          LIMIT 1"; 

$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result)){
echo "The average price of a pint ". $row['type']. " is £".$row['x.price(price)'];
echo "<br />";
}

当我在 phpmyadmin 中测试 sql 查询时,结果显示为 5,但是当我回显结果时它不显示。

以前我计算了平均值,这很容易打印为:

echo "The average price of a pint ". $row['type']. " is £".$row['AVG(price)'];

现在我被困在如何改变 .$row[price(price)] ^^^

4

2 回答 2

1

正如评论所建议的那样,考虑迁移到 PDO 或 mySQLi,因为所有mysql_命令都已被弃用。

你的 PHP 需要阅读;

echo "The average price of a pint ". $row['type']. " is £".$row['price'];

但是,我想知道您希望在 Type 列中返回什么?由于您没有在上面选择它,因此即使您正在计算所有价格的中位数,您也只会返回一个值和一种类型。

至少,您的 SQL 将是;

      SELECT x.price, x.type 
      FROM price_pints x, price_pints y 
      GROUP BY x.price 
      HAVING SUM(    
                   SIGN( 
                         1 - SIGN( y.price - x.price ) 
                       ) 
                ) / COUNT( * ) > .5 
      LIMIT 1
于 2013-02-15T16:54:32.733 回答
0

首先,您需要考虑使用 mysqli 或 PDO 来运行查询,您完全容易受到使用 mysql_query 的 sql 注入的影响,并且无论如何它已经贬值,并且很快就会被删除。话虽这么说,如果您的查询在直接在数据库上运行时正在运行,它应该从 php.ini 运行。

检查您要返回的行数

$numrows = mysql_num_rows($result)

确保您引用了正确的列。

于 2013-02-15T16:35:30.050 回答