обновление базы данных php mysql - PullRequest
0 голосов
/ 29 марта 2011

У меня есть примерная база данных студентов в классе с их идентификатором (UNIQUE), именем, полом, родом, оценками и т. Д.

Что я намерен сделать, это:

  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 ]

1 голос
/ 29 марта 2011

Я настоятельно рекомендую вам использовать имена полей в запросе:

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 голосов
/ 29 марта 2011

удаляет кавычки, содержащие NOW(), поэтому вместо 'NOW()' оно должно быть просто NOW(), так как это функция MYSQL

0 голосов
/ 29 марта 2011

Я рекомендую использовать ORM, например Propel , который позволяет писать код, подобный следующему:

$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 голосов
/ 29 марта 2011

INSERT! = UPDATE

Если вы хотите обновить существующую запись, вам нужно написать запрос UPDATE.Вы можете использовать запрос REPLACE, но он перезапишет всю строку.

...