我有4列的表:Date, John, Frank, Anthony
我想做一个表格,可以由这三个人每天填写,并将这些值存储在数据库中。当John今天填写表单时,应该用日期来创建一个新行,并在数据库中使用他的值。当Frank在1小时后(所以是同一天)填写表单时,他的值也应该插入到数据库中,但应该插入到同一行中,因为现在已经有一行的日期了。但是当Anthony明天填写表单时,我应该用明天的日期创建一个新的行。
因此,简而言之:程序检查是否有人已经填写了今天的表格。如果是的话:它只是在填写者的列中将现有行的值相加。如果没有,它将与今天的日期划清新的界限。
我已经编写了这段代码,但问题是,每次有人填写表单时,它都会生成一个新行,而且只有在$person是当天第一个填写表单的时候才应该创建一行。
$sql = "INSERT INTO table (Date, $name) VALUES (CURDATE(),'$values')"; 发布于 2015-01-28 20:07:24
首先,确保Date字段是主键或唯一键。那么您可以使用关于重复密钥更新
$sql = "INSERT INTO table (Date, $name) VALUES (CURDATE(),'$values')
ON DUPLICATE KEY UPDATE $name='$values'"; 但是,您确实应该检查您的语言中准备好的语句(在PHP情况下是PDO),以防止SQL注入。
发布于 2015-01-28 20:16:40
你应该换个桌子。
不要为每个人创建一个列,而是创建一个name列,这样您就可以:
日期_
将日期和人作为主键:
ALTER TABLE 'table' ADD PRIMARY KEY (Date,Name)然后插入如下:
INSERT INTO table (Date,Name,Values) VALUES (CURDATE(),'$name','$values') ON DUPLICATE KEY UPDATE Values='$values'发布于 2015-01-28 19:58:34
尝试使用替换INTO而不是INSERT INTO。
https://stackoverflow.com/questions/28201204
复制相似问题