数据库:检查重复错误

时间:2012-09-04 12:13:10

标签: php mysql database duplicates

我有一个PHP代码和数据库中的一个字段,这是一个独特的字段。如果人们填写表单并且$_POST['name']已经在数据库中,则会出错。

这就是我所拥有和想要的,但现在我想检查是否有错误,以便我可以在if / else语句中处理它。

这是我的代码:

$db = new database();
$sql = "INSERT INTO product_groepen (name) VALUES (".$_POST['name'].")";
$result = $db->executeQuery($sql);
if ($result)
{
    $db->executeQuery($sql);
    $page .= 'Yes';
} else {
    $page .= 'No';
}

错误:

  

警告:PDO :: query()[pdo.query]:SQLSTATE [23000]:完整性   约束违规:1062密钥2的重复条目''   第26行的/classes/database.class.php

它有效,当它不工作时它会说'不',但错误仍然存​​在。

1 个答案:

答案 0 :(得分:2)

尝试使用INSERT IGNORE忽略插入,如果它重复。此外,如果您仍在使用mysql_*,则会出现mysql注入漏洞,请将其转义:

$db = new database();
$sql = "INSERT IGNORE INTO product_groepen (name) VALUES ('".mysql_real_escape_string($_POST['name'])."')";
$result = $db->executeQuery($sql);
$affected = mysql_affected_rows($result); // you must have that function something like $db->affectedRows ?
if ($affected){
    $page .= 'Yes';
} else {
    $page .= 'No';
}

并确保不执行两次查询