1

我的数组有一些值

  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 数据库表中插入这些值

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

这应该工作吗?

或者我应该json_decode在我插入数据库之前?

4

3 回答 3

3

json_encode(array)返回一个 json 字符串,而 MySQL 插入的值应该是 (value1,value2,...)。json_decode(json_string)返回一个数组,并implode用“,”将数组片段粘合起来,分隔数组对象。如果您唯一要做的就是将其插入数据库,则无需将其转换为 json。通常 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)."')");
于 2012-12-06T15:36:25.730 回答
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 函数。

于 2012-12-06T15:50:46.060 回答
0

JSON 是一种将数据表示为字符串的方法。它主要用于传输数据。

JSON在这里没有位置,只有implode数据,并在查询中使用它。

mysql_query("INSERT INTO TABLE (sno, type, category) VALUES ".
    "(" . implode(",", $value) . ")");
于 2012-12-06T15:51:58.620 回答