【发布时间】:2011-12-04 20:45:07
【问题描述】:
在插入数据库之前,我使用以下代码检查重复项。对我来说,只有当 name、description、price、city 和 enddate 匹配时,才会认为重复。
foreach($states_to_add as $item) {
$dupesql = "SELECT
COUNT(*)
FROM
table
WHERE
(
name = '$name'
AND description = '$description'
AND manufacturer = '$manufacturer'
AND city ='$city'
AND price = '$price'
AND enddate = '$end_date'
)";
$duperaw = mysql_query($dupesql);
if($duperaw > 0) {
echo nl2br("$name already exists in $city \n");
}
else {
$sql = "INSERT INTO table (..... (here go the values to be inserted)
....
每个值都是在运行此检查之前定义的,我的结果总是在项目已经存在时返回。我转储了“dupesql”并将命令复制/粘贴到 phpmyadmin 中,返回计数为 0。
【问题讨论】:
-
在您的 SELECT 和您的 INSERT 之间可能会发生来自其他地方的 INSERT,然后您的数据就会损坏。不要自己做唯一性检查,在数据库中添加一个唯一约束并忽略预期的“唯一约束违规”错误。
标签: php mysql duplicates