2013-04-30 55 views
1

对不起,提出一个简单的问题。PHP - 从while循环获取值

即时通讯仍然是新的PHP,所以即时通讯仍在学习。

例如使用while($row = mysql_fetch_assoc($sql)),我查询并回显单列名称“weight”,在4个结果后,each $row['weight']的值为30,15,20,35。我如何获取这些值并执行加法以获得重量的总值。

<?php 

    $sql = mysql_query("SELECT weight FROM table WHERE ID = '$ID'"); 

    while ($row = mysql_fetch_assoc($sql)){ 

    echo $row['weight']; 

    ?> 

输出示例:

30 
15 
20 
35 

我想执行加法。

30 + 15 + 20 + 35 = 100

+0

为的mysql_query呼叫正在与mysqli的过时,我建议你看一看mysqli的(因为这将是在某些时候被删除,将来可能会以非工作代码结束)。这就是说,最简单的是直接在mysql中选择总和(重量)而不是选择重量 – 2013-04-30 02:29:36

回答

0

我相信你正在寻找的东西,如:

$total = 0;#initialize 
while ($row = mysql_fetch_array($sql)){ 
     $total += $row['weight'];#adds weight to the total 
} 
echo $total; 
0
$Number_Variable = 0; 
    while ($row = mysql_fetch_array($sql)){ 

    $Number_Variable += $row['weight']; 

    } 

然后你完成了一段时间后:

echo $Number_Variable; 
0
<?php 

    $sum = 0; 
    $sql = mysql_query("SELECT weight FROM table WHERE ID = '$ID'"); 

    while ($row = mysql_fetch_array($sql)){ 

    $sum = $sum + $row['weight']; 


    } 

    echo $sum; 


    ?> 
0
<?php 

    $sql = mysql_query("SELECT weight FROM table WHERE ID = '$ID'"); 

    $total = 0; 
    while ($row = mysql_fetch_array($sql)){ 
    $total = $total + $row['weight']; 
    } 

    echo $total; 

?> 
3

你让MySQL的计算,对你:

SELECT SUM(weight) AS total FROM table WHERE ID = '$ID' GROUP BY ID; 

例子:

$sql = sprintf(
     'SELECT SUM(weight) AS total FROM table WHERE ID = '%d' GROUP BY ID', $ID 
); 

    $result = mysql_query($sql); 

    $total = $result ? mysql_fetch_assoc($result)['total'] : 0; 

但我不喜欢这个例子的代码,因为它使用mysql_*功能和PDO要好得多。

+0

Tnx!我很担心,因为我从来没有遇到过这个问题 – raziel2101 2013-04-30 02:36:56

+0

关于你到底在担心什么? – 2013-04-30 02:37:54

3

为了这个在PHP只是每个重量添加到$total变量的循环中:

$sql = mysql_query("SELECT weight FROM table WHERE ID = '$ID'"); 
$total = 0; 
while ($row = mysql_fetch_assoc($sql)){ 
    $total += $row['weight']; 
} 
echo $total; 

然而,你也可以考虑直接在SQL这样做:

$sql = mysql_query("SELECT SUM(weight) AS total FROM table WHERE ID = '$ID'"); 
$row = mysql_fetch_assoc($sql); 
$total = $row['total']; 

还要注意mysql函数自PHP 5.5起弃用,将来将被删除,您需要查看mysqli_queryPDO::query

+0

哇! TNX队友!有效! – raziel2101 2013-04-30 02:35:51

+0

@ raziel2101太棒了!乐意效劳。你能将答案标记为已接受吗? – jszobody 2013-04-30 02:44:34

0

现在,你在学习开始学习的MySQL/PHP和mysqlipdo原因mysql_* functions are deprecated

$mysqli = new mysqli('server', 'database_user', 'database_pass', 'database_name'); 
if($mysqli->connect_errno) { 
    echo "Error connecting to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; 
} 

$my_query = $mysqli->query("SELECT SUM(weight) as total_weight FROM your_table"); 
if($my_query->num_rows){ 
    while($row = $my_query->fetch_assoc()){ 
     echo 'Total weight is: ' . $row['weight']; 
    } 
}