【问题标题】:Add data to database if data is unique如果数据是唯一的,则将数据添加到数据库
【发布时间】:2014-04-28 03:24:40
【问题描述】:

这里我有一个将数据插入数据库的 php PDO 代码:

if ($_SERVER['REQUEST_METHOD'] == "POST") {

            try {        
                $DBH = new PDO($dsn, $user, $pass, $opt);
                $STH = $DBH->prepare("INSERT INTO track_aktivnosti (datum, id_akt, tabela, id_tabele, naziv) VALUES (:1,:2,:3,:4,:5)");

                $STH->bindParam(':1', $_POST['datum']);
                $STH->bindParam(':2', $_POST['id_akt']);
                $STH->bindParam(':3', $_POST['tabela']);
                $STH->bindParam(':4', $_POST['id_tabele']);
                $STH->bindParam(':5', $_POST['naziv']);

                $STH->execute();

            } catch (PDOException $e) {
                echo $e->getMessage();
            }
            echo "<p>Data submitted successfully</p>";

        }

如何检查数据库中是否存在数据以跳转到其他数据,以及数据库中的数据是否唯一以添加此数据?

我不想将重复数据添加到我的数据库中... php pdo可以吗?

【问题讨论】:

  • 真的对不起我的英语...
  • 为什么不先运行一个 SELECT 查询来查找该数据?如果它不存在,请运行 INSERT。并不是说您总共只能进行 1 个查询...
  • 如何用 php PDO 做到这一点,一些例子?还有其他方法吗?
  • 想到适当使用唯一索引
  • @gmaestro,您是在问如何使用 PDO 执行 SQL 查询吗?和你现在做的完全一样……

标签: php mysql database pdo duplicates


【解决方案1】:

做到这一点的正确方法是让数据库防止重复数据进入。您可以使用唯一索引来做到这一点。

假设“唯一”是指所有五列,那么索引将是:

create unique index track_aktivnosti_5cols on
    track_aktivnosti(datum, id_akt, tabela, id_tabele, naziv);

然后,当您尝试将数据插入到已经存在的表中时,您会收到错误消息。如果您不想要错误,那么有两种简单的方法可以避免它。更好的是:

INSERT INTO track_aktivnosti(datum, id_akt, tabela, id_tabele, naziv)
    VALUES (:1,:2,:3,:4,:5)
    ON DUPLICATE KEY UPDATE datum = VALUES(datum);

这将在遇到重复值时进行冗余更新。这可以防止错误。另一种方法是:

INSERT IGNORE INTO track_aktivnosti(datum, id_akt, tabela, id_tabele, naziv)
    VALUES (:1,:2,:3,:4,:5);

这将在发生重复错误时忽略它(插入不发生)。但它也会忽略所有其他错误。

【讨论】:

  • 我在寻找这段代码:在 track_aktivnosti(datum, id_akt, tabela, id_tabele, naziv) 上创建唯一索引 track_aktivnosti_5cols;所以这个没有 chanes 插入功能很好用......但是如何?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-19
  • 2018-01-22
  • 2017-01-15
相关资源
最近更新 更多