1

我有带有字段 id、名称的表格标签

在前端,用户在与相应产品关联的文本区域中输入逗号分隔的标签

所以在插入过程中,我想将标签添加到标签表中的标签表中。

所以一切正常,但问题是我想将特定标签添加到标签表中没有的表中

例如:考虑形式

产品名称:橙汁描述:橙汁的描述。标签: 水,果汁,饮料

所以我想将那些标签添加到表中不存在的标签表中。例如,水和饮料在表中,而果汁不在,因此只需将果汁添加到标签表中。

4

5 回答 5

3

您可以有一个名为 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);
于 2013-06-05T11:41:55.177 回答
2

如果您使“名称”列唯一,那么您可以使用INSERT IGNOREINSERT ... ON DUPLICATE KEY UPDATE ...

于 2013-06-05T11:27:07.500 回答
2

您可以使用explode表单标签将它们作为数组,然后将数组的每个值与已存储的标签进行比较。因此,您将能够INSERT在您的表中找到新的和它们。

于 2013-06-05T11:28:04.647 回答
2

试试这个

$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
于 2013-06-05T11:45:59.670 回答
1

使用 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 上找到解释

于 2014-05-09T07:58:45.693 回答