如果它们存在于数据库中,则删除数组值?

时间:2011-09-21 23:00:51

标签: php mysql arrays

我有一个存储在数据库中的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命令插入数据与唯一值,如果失败,我想删除该数组值。这可能吗?

我的错误代码:

foreach ($urlArray as $url) {

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

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

}

有更好的方法吗?

任何帮助将不胜感激,谢谢! TRE

2 个答案:

答案 0 :(得分:3)

您可以使用unset从数组中删除值。为此,您需要知道密钥,因此您可以考虑修改foreach以包含密钥:

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

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

答案 1 :(得分:1)

我认为这是一种方法。有几个问题:

  • 非规范化网址表示法
  • 更改表以测试是否存在

第一个问题是有很多表达任何给定URL的方法。例如:http://www.example.com/somepage可以写成http://www.example.com/%73omepage

另一个是哲学上讲,对数据库中某些数据的纯测试不应该改变数据库,无论它是否已经存在。一个简单的SELECT * FROM links WHERE url=whatever是更清洁的方法。大概你有一个未说明的收集URL的目标。

@mfonda已经回答了字面问题。