Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中向数据库插入多个标记_Php_Mysql_Tags_Jquery Tokeninput - Fatal编程技术网

在PHP中向数据库插入多个标记

在PHP中向数据库插入多个标记,php,mysql,tags,jquery-tokeninput,Php,Mysql,Tags,Jquery Tokeninput,我正在尝试向数据库中插入多个标记。 我正在使用TokenInput插件收集用户的标签。 我得到一个由逗号分隔的标签字符串,如下所示: if($_POST) { $data = $_POST['tags']; $tags = explode(",", $data); $snap = 6; echo $data; } 数据来自ajax函数。在回显$data时,我得到如下字符串: if($_POST) { $data = $_POST['tags']; $tags = explode(",", $d

我正在尝试向数据库中插入多个标记。 我正在使用TokenInput插件收集用户的标签。 我得到一个由逗号分隔的标签字符串,如下所示:

if($_POST) {
$data = $_POST['tags'];
$tags = explode(",", $data);
$snap = 6;
echo $data;
}
数据来自ajax函数。在回显$data时,我得到如下字符串:

if($_POST) {
$data = $_POST['tags'];
$tags = explode(",", $data);
$snap = 6;
echo $data;
}
扎拉,万圣

然后,我继续通过explode()分离这些元素,并循环创建的数组

if($_POST) {
$data = $_POST['tags'];
$tags = explode(",", $data);
$snap = 6;

for($x = 0; $x < count($tags); $x++) {
    mysql_query("INSERT INTO tags (tagid, tagname, snapid) VALUES ('', '$tags[x]', '$snap')");
  }
}
if($\u POST){
$data=$_POST['tags'];
$tags=分解(“,”,$data);
$snap=6;
对于($x=0;$x
此代码将在“标记名”中插入空值。你有什么建议吗?我应该做些什么来让这一切顺利进行?我应该重写循环代码吗?
感谢您的帮助。

您可以使用更优化的批插入,还可以修复生成sql值字符串的问题:

<?php

if($_POST) {
    $data = $_POST['tags'];
    $tags = explode(",", $data);
    $snap = 6;

    $values = array_map(function($item) use($snap) {
        return "('', '".$item."', '".$snap."')";
    }, $tags);

    $sql = "INSERT INTO tags (tagid, tagname, snapid) VALUES ".
        implode(",", $values);
    mysql_query($sql);
}

设法做到了这一点。这很简单,在发布之前应该多考虑一下。
所以我现在的代码是:

if($_POST) {
$data = $_POST['tags'];
$tags = explode(",", $data);
$snap = 6;

for($x = 0; $x < count($tags); $x++) {
    mysql_query("INSERT INTO tags (tagid, tagname, snapid) VALUES ('', '" . $tags[$x] . "', '$snap')");
  }
}
if($\u POST){
$data=$_POST['tags'];
$tags=分解(“,”,$data);
$snap=6;
对于($x=0;$x
有了这个,我可以在数组中插入尽可能多的标记。 希望有一天有人会觉得这个有用。
谢谢你的建议。我真的不知道如何使用这个array_map()函数。另外,关于这一点:$sql=“插入标记(tagid、tagname、snapid)值”。内爆(“,”,$value);mysql_查询($sql);这不起作用,我没有得到任何回报。
array\u map
返回数组修改值的每个元素。在本例中,对于每个标记,它都返回带有要插入的值的sql字符串。php数组函数是处理数组的更酷的方法:)