PDO json插入多个标签

时间:2014-01-11 20:07:51

标签: php json pdo

我一直在尝试使用pdo将一些标签插入到表中,但无济于事。

我有一个名为Tag的php数组。

标签数组中的样本数据如下

   tag[] = [[a,b,c,d,e],[f,g,h,i,j]]

使用下面的for循环我可以将其转换为(1,'a','b','c','e',0),(1,'f','g',' H”, 'I',0)

      $value="";
      $value .= "($postid,";
      for($i=0;$i<sizeof($tag);$i++)
      {
        $value .="'$tag[$i]'";
          if($i + 1 == $sizeof($tag){
          $value .=")";
         }else{
          $value .="),";
         }
      }

准备并插入表格如下

      $inserttagquery = "insert Into tagtable  ( postid, desc, b, u, toppos,leftpos ,ver) values :value";
      $queryinserttag = $conn->prepare($inserttagquery);
      $queryinserttag->execute(array('value'=>$value));
      $insertedtag = $queryinserttag->rowCount();

但是,这似乎不起作用。 $ insertedtag不返回任何值。

1 个答案:

答案 0 :(得分:0)

你的SQL完全错了。您在字段列表中将6个字段 AND 设置为常量值,然后仅提供一个SINGLE占位符来为这些字段提供值。

  1. 您不能将数字用作字段名称。 0是一个扁平的语法错误和无效的字段名称。
  2. 占位符在字段和值之间具有1:1的关系。您不能将多个值推送到单个变量中,并尝试将该值与占位符一起使用以填充其他字段。
  3. 您的查询应该是:

    INSERT INTO tagtable (postid, desc, b, u, etc...) 
    VALUES (:postid, :desc, :b, :u, etc...)
    

    然后为每个placehodler提供INDIVIDUAL值:

     $stmt->execute(array($postid, $desc, $b, $u, etc...));
    

    正如所写,并忽略所有其他问题,您的查询会尝试将您的(1, 'f', 'g', etc..)字符串推送到postid字段。