显示mysql查询的结果

时间:2013-02-15 16:24:54

标签: php sql median

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

这是我的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)] ^^^

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

首先,您需要考虑使用mysqli或PDO来运行您的查询,您完全容易使用mysql_query进行sql注入,并且无论如何都会对其进行折旧,并且很快就会被删除。如果您的查询在您的数据库上直接运行时,它应该从php运行。

检查您要返回的行数

$numrows = mysql_num_rows($result)

确保引用正确的列。