2011-03-29 145 views
0

我有个同学在一类样本数据库,它们的ID(唯一),姓名,性别,birhdate,标志等更新时间戳PHP MySQL数据库

我打算做的是:

  1. 如果学生没有输入他的数据,它应该插入数据。
  2. 如果学生第二次使用,时间应该更新。 我用下面的代码,但它不工作。

谢谢!!

// open connection 
     $con = mysql_connect($host, $user, $pass) or die ("Unable to connect!"); 
     // select database 
     mysql_select_db($db) or die ("Unable to select database!"); 
     mysql_query("INSERT INTO UserData VALUES ('$id','$name','$gender','$email','$birthday','Marks','NOW()')"); 
     mysql_close($con); 
+0

“如果学生还没有进入他的数据,它应该插入的数据。”这是什么意思?'如何插入不知道的数据? – Alp 2011-03-29 01:41:48

回答

0

我建议使用像Propel的ORM,它允许你写这样的代码:

$user = UserQuery::create()->findPK($id); 
if(!$user) { 
    $user = new User(); 
    $user->setId($id); 
} 
$user->setName($name); 
$user->setGender($gender); 
$user->setEmail($email); 
$user->save(); 
0

INSERT!= UPDATE

如果你想更新你需要编写一个查询UPDATE现有的记录。您可以使用REPLACE查询,但它会覆盖整个行。

1

我会强烈建议你在查询中使用的字段名称:

INSERT INTO UserData (`id`, `name`, `gender`, `email`, `bday`, `marks`, `time`) 
VALUES ('$id','$name','$gender','$email','$birthday', $marks, NOW()) 
ON DUPLICATE KEY UPDATE `time` = NOW() 

我假设您在id(或它是主键)上有唯一索引。此外,请根据您的模式将上述查询中的列名替换为实际列名。请参阅this

如果您可以发布您的表架构,那么我可以提供您需要使用的确切查询。

+0

从来没有见过这样 - 很酷。我怀疑更新时间真的是他们想要做的。 – therealsix 2011-03-29 02:51:31

+0

是的,只更新时间没有多大意义。无论如何,查询可以扩展到更新多列。另外,如果所有列都需要更新,那么可以在其原始查询中使用“REPLACE”而不是“INSERT”。 – nikhil500 2011-03-29 05:06:56

0

除去封闭NOW() 所以不是'NOW()'的行情应该是刚刚NOW(),因为它是一个MySQL的功能