2011-03-29 155 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的功能