基于某些条件插入(Mysql)

时间:2013-06-05 11:21:03

标签: php mysql sql

我的表标签包含字段ID,名称

在前端,用户在与相应产品

关联的textarea中输入分隔的逗号

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

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

例如:考虑表格

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

所以我想将这些标签添加到表中不存在的标签表中。 例如,水和饮料都放在桌子上,果汁不仅仅是在标签桌上添加果汁。

5 个答案:

答案 0 :(得分:3)

你可以有一个名为let的临时表,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);

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

答案 3 :(得分: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

答案 4 :(得分: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找到解释