2013-02-15 153 views
1

我已经设法使用其他问题在这里为了找到我的表中的结果,但现在我不确定如何打印这个结果。显示mysql查询结果

这是我的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 />"; 
} 

结果显示为5当我测试在phpMyAdmin SQL查询,但是当我呼应的结果也不会显示。

以前我计算的平均,并且很容易打印为:

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

现在我被困如何改变$行[(价格)^^^

+2

用mysql停止,而是使用PDO只是寻找它 – samayo 2013-02-15 16:28:54

+0

你希望所有的*位数*价格,或中位数*每个类型*,在组时尚? – PGallagher 2013-02-15 16:58:42

+0

所有价格。我已经计算出正确的答案,但我无法显示它。 '£'的某处$ row ['x.price(price)'];'我错过了这一点.. – 2013-02-15 17:01:52

回答

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 
+0

谢谢!是的,我看到我的类型现在完全没有必要了。让事情看起来比实际情况更加复杂,现在正在工作,干杯! – 2013-02-15 17:13:44

+0

哈哈......没有任何问题!你根本没有把它搞糊涂,只是好奇!很高兴你的工作有效......如果有帮助,请随时接受答案!恭喜! – PGallagher 2013-02-15 17:16:36

0

第一。关闭,你需要考虑使用mysqli或PDO来运行你的查询,你完全容易使用mysql_query进行sql注入并且它的折旧无论如何都会被删除。这就是说,如果你的查询工作时直接运行在你的数据库,它应该从PHP运行。

检查,看看你是返回多少行

$numrows = mysql_num_rows($result) 

确保您引用正确的列。

+0

注意到,我现在会考虑PDO 问题在这一行: 'echo“一个品脱的平均价格”。$ row ['type']。“is£”。$ row [ 'x.price(price)'];' 我不知道如何得到这个来显示“5”就像查询一样 – 2013-02-15 16:48:24