更新时间戳php mysql数据库

时间:2011-03-29 01:39:13

标签: php mysql datetime insert-update

我有一个班级学生的样本数据库,其中包含ID(UNIQUE),姓名,性别,birhdate,商标等。

我打算做的是:

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

    // 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);
    

4 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:0)

INSERT!= UPDATE

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

答案 2 :(得分: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();

答案 3 :(得分:0)

删除包含NOW()的引号 所以代替'NOW()'它应该只是NOW(),因为它是一个MYSQL函数