在php变量中保存数据库表中的值

时间:2014-07-14 13:18:34

标签: php mysql

我想知道如何在php变量中保存数据库表值。因此,当用户或Web荣誉更新​​表值时,php变量值不应更改。 e.g。

 $result=mysql_query("select * from users");
while($row=mysql_fetch_array($result))
{
if ($row["username"]==$_SESSION['username'])
$save=$row["data"];
}

如果表格如此:

while($row=mysql_fetch_array($result))
{
if ($row["username"]==$_SESSION['username']) 
{
$data=$_POST["data"];
$query = "UPDATE users SET ,data='$data' WHERE username = '$_SESSION['username']'";
mysql_query($query);
}
}

以前的数据将丢失,$save变量将包含用户更新的新数据。但是,我希望$save变量使用数组或类似的东西存储以前的数据?

1 个答案:

答案 0 :(得分:0)

如果需要值历史记录,可以将每个值的更改保存在不同的表中。在我的例子中,我只保存id,table,field和new value。您还可以保存时间戳并记录单个字段的所有更改。

create table updates (
    id int(11) not null auto_increment,
    table_name varchar(50) not null,
    field_name varchar(50) not null,
    field_value varchar(50) not null
);


while($row=mysql_fetch_array($result)) 
{
    if ($row["username"]==$_SESSION['username']) 
    {
      $col1 = $_POST["data"]['col1'];
      $col2 = $_POST["data"]['col2'];
      $col3 = $_POST["data"]['col3'];

      // save the log
      mysql_query('insert into updates values(NULL, "users", "col1", "' . $col1 . '")');
      mysql_query('insert into updates values(NULL, "users", "col2", "' . $col2 . '")');
      mysql_query('insert into updates values(NULL, "users", "col3", "' . $col3 . '")');

      // change the value
      $query = "UPDATE users SET data='$data' WHERE username = '$_SESSION['username']'";
      mysql_query($query);
    }
}

然后,如果您需要' users.col3'的历史记录。字段,只需运行查询

select * from updates
where table_name = 'users'
and field_name = 'col3'

返回此字段的所有更新。

PS。请记住添加"更新"像user_id,timestamp等字段。