我将从问题开始。我正在循环调用 mysql_fetch_assoc() 来显示一行中的所有字段。每一次新的传递都会给我新的行加上旧的行值。它复合了每一次传递。我尝试了很多方法,浏览了很多帖子和论坛,但还没有找到我需要解决的问题。任何帮助表示赞赏。
编辑:抱歉,我发布问题后缩进变得困惑。
这是 MySQL 表脚本:
CREATE TABLE pay_hours
(
_key int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
_userNumber int(11),
_hoursWorked double
);
CREATE TABLE pay_dates
(
_key int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
_userNumber int(11),
_dateWorked date
);
这是查询:
$query = "SELECT h._userNumber, d._dateWorked, h._hoursWorked FROM pay_hours h, pay_dates d WHERE d._userNumber=h._userNumber ORDER BY d._dateWorked DESC"; // gets the user, hours and dates and displys most recent dates first.
$result = $keyFrameObject->Execute($query); // wrapper for mysql_query()
这是循环:
$row = mysql_fetch_assoc($result);
while ($row)
{
$table .= "<tr>";
foreach ($row as $field)
{
$table .= "<td>" . $field . "</td>";
}
$table .= "</tr>";
$row = mysql_fetch_assoc($result);
}
这是一个 PHP 页面,我最终将回显使用此数据创建的表。我输入 dateWorked 和 hoursWorked 的值,同时使用相同的 userNumber 值进行测试。以下是一些示例输入和输出(使用 var_dump($row)
):
输入:
date = 2011-08-05
hours = 1
输出:
array(3) { ["_userNumber"]=> string(3) "333" ["_dateWorked"]=> string(10) "2011-08-05" ["_hoursWorked"]=> string(1) "1" }
现在页面已回发,我将输入一组新值:
输入:
date = 2011-08-04
hours = 5
输出(未格式化):
array(3) { ["_userNumber"]=> string(3) "333" ["_dateWorked"]=> string(10) "2011-08-05" ["_hoursWorked"]=> string(1) "5" } array(3) { ["_userNumber"]=> string(3) "333" ["_dateWorked"]=> string(10) "2011-08-05" ["_hoursWorked"]=> string(1) "1" } array(3) { ["_userNumber"]=> string(3) "333" ["_dateWorked"]=> string(10) "2011-08-04" ["_hoursWorked"]=> string(1) "1" } array(3) { ["_userNumber"]=> string(3) "333" ["_dateWorked"]=> string(10) "2011-08-04" ["_hoursWorked"]=> string(1) "5" }
输出(格式化):
array(3) { ["_userNumber"]=> string(3) "333" ["_dateWorked"]=> string(10) "2011-08-05" ["_hoursWorked"]=> string(1) "5" }
array(3) { ["_userNumber"]=> string(3) "333" ["_dateWorked"]=> string(10) "2011-08-05" ["_hoursWorked"]=> string(1) "1" }
array(3) { ["_userNumber"]=> string(3) "333" ["_dateWorked"]=> string(10) "2011-08-04" ["_hoursWorked"]=> string(1) "1" }
array(3) { ["_userNumber"]=> string(3) "333" ["_dateWorked"]=> string(10) "2011-08-04" ["_hoursWorked"]=> string(1) "5" }
每次我输入值并运行代码时,它都会进一步复杂化。我相信问题是循环,但我不确定。不知何故, $row 在回发后仍保持值(value)。
再次感谢您的帮助,如果需要更多信息,请告诉我。
最佳答案
更改 $table .= "";到 $table = "";
.= 保留之前循环中 $table 的值。
关于php - mysql_fetch_assoc() 的结果将旧值复合到新值上。有任何想法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6963369/