[英]Storing JSON data in database: object could not be converted to string error
简而言之,我用Javascript编写了数据:
JSONdata = {
name: form.name.value,
address1: form.custa.value,
address2: form.custa2.value,
postcode: form.custpc.value,
order: fullorder,
cost: document.getElementById('total')
}
fullorder是要订购的一系列产品。 : [{"idnum":"2","cost":232,"quantity":"1"},{"idnum":"1","cost":2342,"quantity":"3"}]
我有一个XJAX,它对数据进行了字符串化处理,如下所示:
{"name":"j","address1":"jh","address2":"jhj","postcode":"h","order":[{"idnum":"2","cost":232,"quantity":"1"},{"idnum":"1","cost":2342,"quantity":"3"}],"cost":{}}
在PHP中,它以数组形式给出:
Array
(
[0] => stdClass Object
(
[idnum] => 2
[cost] => 232
[quantity] => 1
)
[1] => stdClass Object
(
[idnum] => 1
[cost] => 2342
[quantity] => 3
)
)
我的问题是如何将其存储在数据库中? 我已经尝试过序列化和json_encode,但是都给了我:“类stdClass的对象无法转换为字符串”。
任何帮助将不胜感激!
->不用担心查询数据库和JSON之争。 我将立即获取所有数据,所以这不是问题:)
编辑:感谢您的答复家伙,我给你一些有关它如何工作的信息:
因此,当我将JSON发送到PHP时,我有一个脚本可以像这样提取所有数据:
$intel = extractdata();
function extractdata() {
if (isset($_REQUEST['data'])){
$jsonDump = json_decode($_REQUEST['data']);
foreach($jsonDump as $key => $value) {
$obj[$key] = $value;
}
return $obj;
}
所以这给了我
$intel['name'] = // form.name.value variable
$intel['address1'] = // form.name.value variable
$intel['order']
给了我上面看到的PHP数组。 我想将所有这些存储到以下列的数据库中:客户名,地址1,地址2,邮政编码,订单,成本
我以为只要$neworder = json_encode($intel['order'])
就可以将其存储在数据库中,但它仍然会引发转换错误。
谢谢
因此,基本上,您有一个包含以下对象的数组:
$o = array((Object)array(array("idnum"=>2, "cost"=>232, "quantity"=>1), array("idnum"=>1, "cost"=>2342, "quantity"=>3)));
用json_encode()
回显此值将返回一个json字符串:
echo json_encode($o);
结果将是
[
{
"0": {
"idnum": 2,
"cost": 232,
"quantity": 1
},
"1": {
"idnum": 1,
"cost": 2342,
"quantity": 3
}
}
]
这不适合您吗? 您是否还在使用任何框架或仅使用纯PHP?
如果您有这个:
$jsonDump = json_decode($_REQUEST['data']);
我相信您不需要这个:
foreach($jsonDump as $key => $value) {
$obj[$key] = $value;
}
此外,您不要启动$ obj(在函数或其他事物的开头应为$ obj = null)。
您需要的是json_encode((array) $obj);
在字符串化之前将对象转换为简单数组,这应该可以解决您的问题。 您还可以实现_toSting($obj)
函数,例如:
$str = '{';
foreach($obj as $key => $value) {
$str .= '"'.$key.'":"'.$value.'"';
$str .= ',';
}
$str = trim(',',$str).'}';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.