我有一个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
它有效,当它不工作时它会说'不',但错误仍然存在。
答案 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';
}
并确保不执行两次查询