在循环期间使用一段时间mysql_fetch_array和UPDATE

时间:2011-02-27 08:12:11

标签: php mysql

我正在尝试从一个表中提取数据,将列与变量进行比较,然后如果它们匹配,则添加它们并更新另一个表上的字段。似乎UPDATE只在while循环中运行一次,并将该值的值放在整个表中该列的每一行中。奇怪的是,当我回应它时,所有的值都是正确的(唯一的)..但只有当我回显...当我用终端查看表时,该列的所有行都是相同的。我已经读过你一次不能使用2个查询......然后再次......我已经读过你可以,如果第一个在循环之外......请帮助......

我想添加每行的field1和field2,并将总数放在总行中。

继承人的代码......

<?php

require("connection.php");


mysql_select_db("database", $connection);
echo "<br />";

$result = mysql_query("SELECT * FROM table");

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

$values = ($row['field1'] + $row['field2']);

echo "values = " . $values;


$sql=mysql_query("UPDATE table SET total_val = '$values'");


echo $row['user_name'] . " " . $values;
echo "<br />";

}

?>

这是回声给我的东西

苏珊14

Mary 18

Bob 13

Sam 21

继承数据库

mysql> SELECT total_val FROM table;

+-----------+
| total_val |
+-----------+
| 21 |
| 21 |
| 21 |
| 21 |
+-----------+

ech总数正是我想要的。我只需要将它们放在total_val列中。

2 个答案:

答案 0 :(得分:1)

更新while循环

中的特定(当前)行

目前,当迭代结束时while循环达到总数21并且更新表值为21时,它就是这样做的,因此所有行都包含21个。

您的更新查询每次都会更新所有行 将此唯一ID的条件放在此处

$sql=mysql_query("UPDATE table SET total_val = '$values' WHERE id=$row['id']");

答案 1 :(得分:0)

当前查询更新数据库中的所有行。

试试这个:

$sql=mysql_query("UPDATE table SET total_val = '$values' WHERE id=".$row['id']);