我想知道如何在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
变量使用数组或类似的东西存储以前的数据?
答案 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等字段。