2012-12-06 57 views
0

我的陣列具有json_encode(陣列)插入

0 => '1' 
    1 => 'moisturizer' 
    2 => 'skincare' 

我想該數組字符串轉換,我目前使用json_encode

$value = array_shift($val_ary); //val_ary is that array 
echo json_encode($value); // This will echo my data like 

["1","moisturizer","skincare"] 

後來我想插入一些值這些值在我的mysql db表中

mysql_query("INSERT INTO TABLE (sno, type, category) 
VALUES ('json_encode($value)')"); 

這個工作應該如何?

或者我應該在json_decode之前插入db?

+0

您是否嘗試插入到數據庫? –

+0

是的..沒有任何事發生 –

+3

不會。如果你對某些東西進行了json編碼,它就變成了一個單一的字符串。 MySQL不支持** json-aware,並且你的查詢將失敗,試圖將json字符串填充到'sno'字段並且未定義類型/類別。 –

回答

2

json_encode(array)返回一個json字符串,而MySQL插入的值應該是(value1,value2,...)。 json_decode(json_string)返回一個數組,implode用「,」分隔數組對象。如果你做的唯一事情就是將它插入到數據庫中,那麼沒有必要將它轉換成json。通常被用於在DB

如果你得到的數據作爲JSON傳遞信息頁/服務器之間(AJAX調用爲例)或保存數組作爲字符串JSON:

$value = json_encode(array(value1,value2,...)) 

mysql_query("INSERT INTO TABLE (sno, type, category) 
    VALUES ('".implode(",",json_decode($value))."')"); 

,如果你得到的數據作爲數組:

$value = array(value1,value2,...) 

mysql_query("INSERT INTO TABLE (sno, type, category) 
    VALUES ('".implode(",",$value)."')"); 
+1

'.'字符用於字符串連接在PHP中。 –

+0

@RocketHazmat謝謝!今天JS太多了:) – Kuf

0

我不認爲你需要JSON在這裏。你可以嘗試做這些,

$arr = array(0 => '1', 1 => 'moisturizer', 2 => 'skincare'); 
mysql_query("INSERT INTO TABLE (sno, type, category) VALUES ('{$arr[0]}', '{$arr[1]}', '{$arr[2]}')"); 

如果陣列是多維的,那麼你可以使用foreach循環插入數據,

$values = array(); 
foreach($arr as $k=>$v){ 
    $values[] = "('{$v[0]}', '{$v[1]}', '{$v[2]}')"; 
} 
mysql_query("INSERT INTO TABLE (sno, type, category) VALUES ".implode(',', $values)); 

注:不要使用mysql_ *函數,它們會盡快棄用。而是使用PDO或MySqli功能。

0

JSON是一種將數據表示爲字符串的方式。它主要用於傳輸數據。

JSON在這裏沒有地方,只是implode的數據,並在查詢中使用它。

mysql_query("INSERT INTO TABLE (sno, type, category) VALUES ". 
    "(" . implode(",", $value) . ")");