2014-12-26 81 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你必須接受這個答案,如果它可以幫助你。 –