【问题标题】:Inserting multiple tags to database in PHP在PHP中将多个标签插入数据库
【发布时间】:2016-03-15 21:08:02
【问题描述】:

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

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

数据来自 ajax 函数。回显 $data 时,我得到一个这样的字符串:

Zara,诸圣

然后我继续通过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')");
  }
}

此代码会将空值插入“标记名”。你有什么建议我应该改变什么来完成这项工作吗?我应该重写循环代码吗? 感谢您的帮助。

【问题讨论】:

    标签: php mysql tags jquery-tokeninput


    【解决方案1】:

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

    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')");
      }
    }
    

    有了这个,我可以在数组中插入尽可能多的标签。 希望有一天有人会发现这很有用。 谢谢

    【讨论】:

      【解决方案2】:

      您可以使用更优化的批量插入并修复生成 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);
      }
      

      【讨论】:

      • 您好,谢谢您的建议。我真的不知道如何使用这个 array_map() 函数。另外,关于这个: $sql = "INSERT INTO tags (tagid, tagname, snapid) VALUES "。内爆(“,”,$值); mysql_query($sql);这不起作用,我什么也得不到。
      • array_map 返回数组中每个元素的修改值。在这种情况下,对于每个标签,它都会返回带有要插入的值的 sql 字符串。 php array_* 函数是处理数组的更酷的方式:)
      猜你喜欢
      • 2016-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-26
      • 2013-03-24
      相关资源
      最近更新 更多