2012-10-14 55 views
0

給出如下表:使用PHP或SQL的錯誤檢查

CREATE TABLE User (
Email VARCHAR(256) PRIMARY KEY, 
Name VARCHAR(256), 
); 

我試圖插入日期到表中。 要檢查重複,我應該使用SQL從用戶選擇電子郵件,其中電子郵件= $電子郵件,檢查數量或行返回爲1,如果是1,我只是用PHP來打印錯誤信息 OR 如果我只是嘗試將數據插入表中並使用以下內容來打印錯誤?

mysql_query('INSERT INTO ...'); 
if (mysql_errno() == 1062) { 
    print 'no way!'; 
} 

哪個更好?

+0

你應該使用mysql_error消息 –

+2

開始使用'mysqli的_()' –

回答

0

你可以去這樣的查詢:

$sql = "INSERT INTO `table` VALUES ('$email','$Name')" 
     ." WHERE NOT EXISTS (SELECT * FROM `table` WHERE `email`='$email')"; 

mysql_query($sql) or die("There's a duplicate.");` 
+0

喜先生,對於SQL代碼的感謝。沒有真正想到這種方式。 – mikey

+0

-1使用模具()中的示例的:它是幾乎從未接受剛剛滴出的腳本的。數據庫出錯的原因也很多,而不僅僅是重複的記錄。 – HorusKol

0

一般來說,最好讓DBMS做檢查,因爲該功能已經存在並經過測試。你只需要處理錯誤消息。

如果你堅持要用自己的代碼做檢查,是一個集思廣益的幾個小時(考慮到問題解決的複雜性)進行製備。

+0

先生您好,感謝您的提示。但是,如果表現在包含Email VARCHAR(256)PRIMARY KEY, 名稱VARCHAR(256)NOT NULL, 如果電子郵件被複制且名稱爲空,則mysql將返回最後一次已知錯誤,如何打印這兩個錯誤消息? – mikey

+0

您可以收到一般錯誤消息或打印上一條錯誤消息,並讓用戶一次修復輸入1步驟。 – iCantSeeSharp

+0

一個好的PHP/MySQL應用程序在所有級別應用數據驗證和驗證 - 在驗證POST數據(或任何源代碼)之前,您應該選擇NULL數據值,然後將該變量作爲查詢的一部分傳遞。 – HorusKol