0

我有一个班级学生的示例数据库,其中包含他们的 id(唯一)、姓名、性别、出生日期、标记等。

我打算做的是:

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

4 回答 4

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(或者它是主键)。此外,请根据您的架构将上述查询中的列名替换为实际的列名。

有关更多详细信息,请参阅

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

于 2011-03-29T02:12:36.437 回答
0

INSERT!=UPDATE

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

于 2011-03-29T01:43:18.637 回答
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();
于 2011-03-29T01:47:35.100 回答
0

删除括起来的引号NOW()'NOW()'所以应该是 just NOW(),因为它是一个 MYSQL 函数

于 2011-03-29T06:10:47.203 回答