2011-09-21 59 views
1

我有一個存儲在數據庫中的URL列表,我想運行一些代碼來檢查一個url數組與數據庫中存儲的數據。如果該值存在,我希望數組中的值減少。如果它們存在於數據庫中,則刪除數組值?

到目前爲止,我有一個包含3行的數據庫:

CREATE TABLE links 
(
    link_id INT(10) NOT NULL AUTO_INCREMENT, 
    url VARCHAR(255) NOT NULL, 
    last_visited TIMESTAMP, 
    PRIMARY KEY (link_id), 
    UNIQUE KEY (url) 
) 

,基本上我只是想通過一個INSERT命令插入數據VS獨特的價值,如果它失敗了,我會喜歡刪除該數組值。這可能嗎?

我的壞代碼:

foreach ($urlArray as $url) { 

    $sql = "INSERT INTO linkz (url, last_visited) VALUES ('".$url."', NOW())"; 

    if (!mysql_query($sql,$con)){ 
     // remove array here somehow? 
    } 

} 

有沒有更好的辦法?

任何幫助將不勝感激,謝謝! Tre

回答

3

您可以使用unset從數組中刪除值。要做到這一點,你需要知道的關鍵,所以你可能會考慮修改foreach包括關鍵:

foreach ($urlArray as $key => $url) { 
    ... 

    // Remove the item from the array 
    unset($urlArray[$key]); 
} 
+0

太棒了。我正在考慮沿着這條線,但不確定$ key => $ url部分。謝謝! – tr3online

1

我想這是做到這一點的方法之一。有幾個問題:

  • 非規範化的網址符號
  • 更改表要測試存在

的第一個問題是,有大量表達任何給定的URL的方式。例如:http://www.example.com/somepage可以寫成http://www.example.com/%73omepage

另一種是從哲學角度來說,對數據庫中某些數據的純粹測試不應該改變數據庫,不管它是否已經存在。簡單的SELECT * FROM links WHERE url=whatever是更清潔的方法。據推測,你有一個沒有說明的收集URL的目標。

@mfonda已經回答了字面問題。

相關問題