2012-11-14 54 views
0

好傢伙我有一個問題,一個腳本防止重複條目的mysql

$dbhost = 'localhost'; 
$dbuser = 'root'; 
$dbpass = 'root'; 
$dbname = 'site'; 
    $con = mysql_connect($dbhost, $dbuser, $dbpass); 
    if (!$con) 
    { 
    die(mysql_error()); 
    } 
mysql_select_db($dbname, $con); 
$sql = "REPLACE INTO stiri (id, titlu, continut, link, categorie, data) VALUES ('','$titlu','$text','$link','Liga 1','$data')"; 
mysql_query($sql); 
mysql_close($con); 

這部分是一個PHP的foreach一部分,我每次運行該腳本時,我得到重複的條目,我怎樣才能避免這種情況? 我可以使用唯一約束,但我想鏈接是唯一的,這是超過125個字符。

+3

請不要使用已棄用的mysql_函數,如果你可以幫忙的話。改用mysqli或PDO。 –

+2

你不應該把所有這些都放在'for'循環中。創建和關閉這樣的連接是不必要的。只需創建連接,並將要運行的語句放在'for'循環中。 – burmat

+0

http://stackoverflow.com/questions/2219786/best-way-to-avoid-duplicate-entry-into-mysql-database =>我認爲這個鏈接將幫助你..... –

回答

1

我猜id是您的表中的主鍵字段?您正試圖向其中插入一個空字符串('')。如果這是一個INT字段,那麼mysql會將''轉換爲0.第一次插入後,您將遇到重複密鑰問題。

id更改爲auto_increment字段,並插入值爲null的值。

REPLACE INTO stiri (id, ...) VALUES (null, ....) 

因此mysql可以自動爲您生成一個ID。

+1

我正在爲這個謝謝做一個serach! –