Php 拆分标记并将其提交到数据库

Php 拆分标记并将其提交到数据库,php,javascript,sql,database,tags,Php,Javascript,Sql,Database,Tags,我正在尝试创建一个javascript来拆分标记(用户给出的标记,用逗号(,)分隔),并在数据库中以不同的行传递它们,但id相同。 我有以下代码: <form name="formatform" method="post" onsubmit="return validate_format_form()" action="formatsubmit.php"> <p> Συντομος Τιτλος:<input type="text" name="titlos" va

我正在尝试创建一个javascript来拆分标记(用户给出的标记,用逗号(,)分隔),并在数据库中以不同的行传递它们,但id相同。 我有以下代码:

<form name="formatform" method="post" onsubmit="return validate_format_form()" action="formatsubmit.php">
<p>
Συντομος Τιτλος:<input type="text" name="titlos" value="">
Συντομη περιγραφη:<input type="text" name="perigrafi" value="">
</p>
<p>
Τοποθεσια:<input type="text" id="loc" name="topothesia" value="">
Tags:<input type="text" name="tags" value="">
**Οι ετικέτες πρέπει να χωρίζονται με κόμμα
</p>
.
.
.
</form>
如果用户给出了3个标记(用逗号分隔),我想将它们拆分,并将它们以不同的行传递给数据库。
我该怎么做呢?

如果你想用PHP来做,请使用
explode(“,”,$input)。要在JavaScript中执行此操作,请执行
input=input.split(“,”)
。然后,您将拥有一个可以按数字引用的标记数组(例如,
$input[0]…$input[x]
(PHP)或
input[0]…input[x]
(JavaScript))。

如何使用逗号作为分隔符将标记输入拆分为一个数组,然后在标记上迭代,并为每个标记创建一个insert语句?例如

$tag_array = explode(",", $_POST['tags']);
foreach ($tag_array as $tag) {
  $query= " INSERT into photos(`title`,`description`,`location`,`privilages`,`ph_tags`) VALUES ('".$_POST['titlos']."','".$_POST['perigrafi']."','".$_POST['topothesia']."','".$_POST['radio_check']."','".$tag."') ";
  $result= mysql_query($query,$con);
}

您还应该处理用户输入,因为您将获得输入双标记的用户
making explode有空值加上使用
POST
,就像您将有sql注入一样:

<?php 
function get_tags($tags){
    $ret=array();
    $tags=explode(',',strtolower($tags));
    foreach($tags as $tag){
        if($tag==''){}else{
            $ret[]=ucfirst(trim($tag));
        }
    }
    return $ret;
}

function insert_photo_tags($tags){
    array_walk($_POST,'mysql_real_escape_string');
    foreach ($tags as $tag) {
        $query = " INSERT INTO photos(`title`,`description`,`location`,`privilages`,`ph_tags`) 
                   VALUES ('".$_POST['titlos']."','".$_POST['perigrafi']."','".$_POST['topothesia']."','".$_POST['radio_check']."','".$tag."') ";
        mysql_query($query);
    }
}

//Test Input (?tags=php,mySQL,http,bLa,,,,,,123)

$tags = get_tags(mysql_real_escape_string($_POST['tags']));

//Do your insert with the array
insert_photo_tags($tags);

print_r($tags);
/*
Array
(
[0] => Php
[1] => Mysql
[2] => Http
[3] => Bla
[4] => 123
)
*/
?>

您的模式是什么样的?当然,您有一个名为
tags
的表,我有一个带有列标记的表photos,还有一个与表photos连接的表photos,我更喜欢使用javascript中的函数。我试试看。thanksit有效,但我也有一个问题。这是关于一张照片的。我正在上传一张照片,我给了照片的标题、描述、标签等。我想将它们传递到我的数据库,但使用代码给我的id(数据库中的自动增量),代码给我3行(如果我有3个标记)具有不同id。但我希望这3行具有相同的id:S我如何才能做到这一点。?@user138527为标记创建一个单独的表,引用照片表。例如,首先插入照片行,检索新创建的id,然后使用照片id为每个标记插入一行。我已经有一个表标记引用照片表。好主意。谢谢。。!!您能给我一个“首先插入照片行,检索新创建的id,然后使用照片id为每个标记插入一行”的示例代码吗?请参阅如何检索自动递增的id
<?php 
function get_tags($tags){
    $ret=array();
    $tags=explode(',',strtolower($tags));
    foreach($tags as $tag){
        if($tag==''){}else{
            $ret[]=ucfirst(trim($tag));
        }
    }
    return $ret;
}

function insert_photo_tags($tags){
    array_walk($_POST,'mysql_real_escape_string');
    foreach ($tags as $tag) {
        $query = " INSERT INTO photos(`title`,`description`,`location`,`privilages`,`ph_tags`) 
                   VALUES ('".$_POST['titlos']."','".$_POST['perigrafi']."','".$_POST['topothesia']."','".$_POST['radio_check']."','".$tag."') ";
        mysql_query($query);
    }
}

//Test Input (?tags=php,mySQL,http,bLa,,,,,,123)

$tags = get_tags(mysql_real_escape_string($_POST['tags']));

//Do your insert with the array
insert_photo_tags($tags);

print_r($tags);
/*
Array
(
[0] => Php
[1] => Mysql
[2] => Http
[3] => Bla
[4] => 123
)
*/
?>