2014-12-26 59 views
0

我在PHP.I工作有以下值完成json_encode函数。当我打印变量$ vmndetails我得到了下面的细节。插入json_encode值到mysql表

[{ 
    "id":"1", 
    "smsid":"4781366", 
    "senderid":"289613638", 
    "textcontent":"Good day reply", 
    "msgdate":"2014-12-17 13:04:20", 
    "charsetval":"UTF-8", 
    "userid":"", 
    "reprtdate":"2014-12-17 11:04:21" 
}, 
{ 
    "id":"7", 
    "smsid":"4781467", 
    "senderid":"289761363", 
    "textcontent":"Good", 
    "msgdate":"2014-12-17 13:21:18", 
    "charsetval":"UTF-8", 
    "userid":"", 
    "reprtdate":"2014-12-17 11:21:21" 
}] 

我必须将这些值插入到我的mysql表中。

所以我写了下面的函数。

mysql->query("INSERT INTO twowaysms(id,smsid,senderid,textcontent,msgdate,charsetval,userid,reprtdate) VALUES "."(" . implode(",",$vmndetails) . ")"); 

但我得到一个错误“插入值列表不匹配列列表:1136列数在行1'.I不匹配值计数在这里有很多看到了同样的问题,但我不能找到一个solution.How解决问题请人帮助我..

+0

确保你的'$ vmndetails'变量保存的值与列的总数匹配 –

+0

** [implode](http://php.net/manual/ en/function.implode.php)**连接数组元素而不是对象元素的数组。 – Ranjith

回答

1

你有多功能使用维数组数据,所以尝试这样的 - ?

// http://ideone.com/xX2HNU 
$vmndetails = '[{"id":"1","smsid":"4781366","senderid":"289613638","textcontent":"Good day reply","msgdate":"2014-12-17 13:04:20","charsetval":"UTF-8","userid":"","reprtdate":"2014-12-17 11:04:21"},{"id":"7","smsid":"4781467","senderid":"289761363","textcontent":"Good","msgdate":"2014-12-17 13:21:18","charsetval":"UTF-8","userid":"","reprtdate":"2014-12-17 11:21:21"}]'; 

$vmndetails = json_decode($vmndetails, true); 
$values = ""; 
foreach($vmndetails as $v) { 
    $values .= "(".implode(", ", $v)."), " 
} 
$values = rtrim($values, ", "); 

mysql->query("INSERT INTO 
    wowaysms(id,smsid,senderid,textcontent,msgdate,charsetval,userid,reprtdate) 
    VALUES {$values} "); 
+0

Thankyou这么多的reply.Its工作。有一个小问题,我已经给了一些细节的数据类型的表中的varchar,所以单引号应该在那里插入values.When我呼应插入查询值不是有单引号。我们可以为此做些什么? –

+0

是的,我弄明白了。我编辑过你的代码,例如:$ values。=“('”.implode(“','”,$ v)。“'),”;它工作得很好,非常感谢。 –

+0

@ElizabethJoshy你必须接受这个答案,如果它可以帮助你。 –