我正在我的网站上创建一个访问日志,无论何时一个人进入该网站,他都会在数据库中的同一个注册表中设置日期和时间。然而,他没有删除最后一次访问,而是添加了另一个。例如:
这是当前值:2014-01-31 17:18:27
这是新值:2014-02-01 17:18:27
如果我使用UPDATE方法,它会将当前值替换为新值。 我想留下的内容如下:2014-01-31 17:18:27,2014-02-01 17:18:27
让我们更接近我正在做的事情。
这是我正在创建的功能:
function functionInd() {
$this = 'this';
$conn = db();
$prepare = $conn->prepare('
UPDATE table
SET dates=:date
WHERE this=:this');
$prepare->bindParam(':date',date("Y-m-d H:i:s"));
$prepare->bindParam(':this', $this, PDO::PARAM_STR);
$prepare->execute();
disconnectBase($conn);
}
我需要做什么?
答案 0 :(得分:1)
你不想这样做。在SQL中存储列表不是使用数据库的正确方法。您需要一个表,将日期存储在单独的表中,每this
date
行一行。如果您有这样的表,您的代码将很容易:
insert into ThisDateTable(this, date)
select :this, :date;
也就是说,如果你仍然坚持在一个字段中存储列表 - 以及所有后续的延迟和问题,这将导致你 - 语法是以下之一:
set date = concat(date, ',' :date)
set date = date || ',' || :date
set date = date + ',' + :date
set date = date & "," & :date
第一个使用ANSI标准函数,并得到MySQL,Oracle,SQL Server 2012,Postgres,DB2和Teradata(以及其他人)的支持。
第二个使用ANSI标准运算符,并受到多个数据库的支持,特别是Oracle和Postgres(可能还有其他数据库)。
第三种是“t-sql”格式,由SQL Server(所有版本)和Sybase使用。
第四个是由Access使用的,并且在使用&
和使用"
来分隔字符串时非常不标准。
答案 1 :(得分:0)
Update TABLE
SET COLUMN_NAME = COLUMN_NAME_A + COLUMN_NAME_B
WHERE "Condition"
答案 2 :(得分:0)
UPDATE tbl_Name SET ColumnName = ColumnName + 'b' WHERE Condition