我在postgressql中使用了主鍵(pk_user)。如果我插入錯誤的參數。在PHP中捕獲postgres錯誤
的Postgres調用異常:(錯誤:重複鍵值違反唯一約束「pk_user」)
這是確定的,但我想抓住這個錯誤,並把它轉換爲用戶界面(此用戶名使用)
我的PHP腳本:
$sql="INSERT INTO user (....) VALUES (....)"
@$result=pg_query($dbconn,$sql);
if(!$result) {
$error= pg_last_error($dbconn);
if($error==='ERROR: duplicate key value violates unique constraint "pk_user"')
$outputmesage="this username is used";
....
}
else {
.....
}
但建設if($error==='ERROR: duplicate key value violates unique constraint "pk_user"')
是錯誤的。我不知道寫了什麼。函數strcmp(str1,str2)也是錯誤的。
P.S: 我爲我的英語不好
我的評論有點不相關,但不應該先檢查用戶名是否已被使用,然後嘗試插入它? 我不喜歡(也許是個人的)做某件事的方法,我知道它可能是錯誤的,並從副作用看到原因。 – 2010-07-12 15:51:37
dimitris mistriotis:不,這是錯誤的方式。即使你首先檢查它,你也不能保證有人不會在你的檢查和插入之間要求相同的用戶名(除非在事務中 - 但是限制併發性並且在那裏只需要一個查詢就足夠了)。除了Torenaga方法的正確性之外,它也更加有效,因爲它總是隻需要一個查詢,而大多數時候你只需要進行兩個查詢。 – 2013-01-08 16:55:22