这里我有一个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?
正确的方法是让数据库防止重复数据进入。您可以使用唯一索引来完成此操作。
假设"唯一"是指所有五列,那么索引将是:
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);
当重复错误发生时(插入没有发生),这将忽略它。但是它也会忽略所有其他错误