我有带有字段 id、名称的表格标签
在前端,用户在与相应产品关联的文本区域中输入逗号分隔的标签
所以在插入过程中,我想将标签添加到标签表中的标签表中。
所以一切正常,但问题是我想将特定标签添加到标签表中没有的表中
例如:考虑形式
产品名称:橙汁描述:橙汁的描述。标签: 水,果汁,饮料
所以我想将那些标签添加到表中不存在的标签表中。例如,水和饮料在表中,而果汁不在,因此只需将果汁添加到标签表中。
您可以有一个名为 let say, temptags 的临时表,在其中插入您在 textarea 中输入的标签,然后在标签表中插入临时标签以在检查它们不存在之后插入它们,如下所示:http ://sqlfiddle.com/#!2/c2855/1
CREATE TABLE tags (
tag VARCHAR(32)
);
INSERT INTO tags VALUES
('Water'),
('Drinks');
CREATE TABLE temptags (
tag VARCHAR(32)
);
INSERT INTO temptags VALUES
('Water'),
('drinks'),
('juices');
INSERT INTO tags SELECT tag FROM temptags WHERE UCASE(tag) NOT IN (SELECT UCASE(tag) FROM tags);
如果您使“名称”列唯一,那么您可以使用INSERT IGNORE
或INSERT ... ON DUPLICATE KEY UPDATE ...
您可以使用explode
表单标签将它们作为数组,然后将数组的每个值与已存储的标签进行比较。因此,您将能够INSERT
在您的表中找到新的和它们。
试试这个
$part=substr($string,strripos($string,"Tags:")+5); // to get the tags list after "Tags:".
$part=explode(",",$part);
$con=mysqli_connect("host", "user", "password", "db");
$query="select tag from tag";
if(!($result=mysqli_query($query))){
//error
}
$table_tags=array();
while($row=mysqli_fetch_assoc($result)){
$table_tags[]=$row['tag'];
}
$new_tags=array_diff($part,$table_tags);
//prepare query
$query="insert into tags values ";
foreach($new_tags as $tag){
$query=."(".$tag."), ";
}
$query=substr($query,0,-1); //remove the last comma
if(!mysqli_query($con,$query)){
//error
}
//else success
使用 INSERT IGNORE INTO 表
见http://bogdan.org.ua/2007/10/18/mysql-insert-if-not-exists-syntax.html
还有 INSERT … ON DUPLICATE KEY UPDATE 语法,你可以在 dev.mysql.com 上找到解释