有一个我正在发布新闻文章的工作系统。我有时会添加相同的两次,并希望避免这种情况。那么如何更改我的insert语句以首先检查名为'title'的字段上的匹配项,看它是否等于我在我尝试提交的记录中的标题?
这是我使用的PHP代码,因为它是为我做的,因为我是一个PHP新手但我不知道如何检查title = title然后如果找到它就不添加它或者如果它添加它没找到匹配:
$result = mysql_query("
insert into news (
catalogid,
title,
intro,
content,
viewnum,
adddate,
rating,
ratenum,
source,
sourceurl,
isdisplay,
isfeature,
subip,
vsent,
timesubmitted)
values
('1',
'$title',
'$intro',
'$content',
'0',
'$subdate',
'$source',
'$icheck',
'N/A',
'$sourceurl',
'$isapp',
'0',
'127.0.0.1',
'0',
'$tsdate')"
);
谢谢!
答案 0 :(得分:2)
有一些特定于数据库的技巧,例如on duplicate key update
,但通常只需通过select
测试是否存在具有相同键的记录。如果记录存在,则使用新数据update
,否则您insert
新记录。
答案 1 :(得分:1)
您可以在插入之前运行检查查询,例如:
$sql = mysql_query("SELECT catalogid from news WHERE title='".$yourTitle."'");
if(mysql_num_rows($sql) < 1) {
//add your insert query here
}
希望有所帮助
答案 2 :(得分:-1)
$result = mysql_query("SELECT * FROM news WHERE `title`=$title");
if (!$result)
{
// your code INSERT
$result = mysql_query("
insert into news (
catalogid,
title,
intro,
content,
viewnum,
adddate,
rating,
ratenum,
source,
sourceurl,
isdisplay,
isfeature,
subip,
vsent,
timesubmitted)
values
('1',
'$title',
'$intro',
'$content',
'0',
'$subdate',
'$source',
'$icheck',
'N/A',
'$sourceurl',
'$isapp',
'0',
'127.0.0.1',
'0',
'$tsdate')"
);
}
答案 3 :(得分:-1)
您不能使用单个INSERT语句执行此操作,至少不能直接执行此操作。如果将数据库表中的title字段设置为UNIQUE,则可以阻止MySQL插入具有重复标题的记录。您将需要检测mysql_query函数是否返回FALSE;如果是这样,你知道插入了重复的记录,你可以处理这个,但你觉得合适。