2012-12-06 56 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) . ")");