我不是PHP开发人员所以我可能做错了什么。我正在尝试解码JSON字符串并将一些值插入到mysql数据库中。我正在获得一个有效的json对象数组(使用jsonlint测试),所以我将它们逐个添加到数据库中。但是php抛出:
<b>Fatal error</b>: Cannot use object of type stdClass as array
错误。
这是代码:
$array = json_decode(stripslashes($_POST['data']));
for($i = 0, $l = sizeof($array); $i < $l; $i++){
$obj = $array[$i];
echo "ARRAY1: ".$array;
echo "L: ".$l;
echo "ARRAY2: ".gettype($array);
$q = 'INSERT INTO dependencies SET projectID = "1", `from` = "'.$obj->{'From'}.'", to = "'.$obj->{'To'}.'", type = "'.$obj->{'Type'}.'", cls = "'.$obj->{'Cls'}.'", lag = "'.$obj{'Lag'}.'"';
从行$q = 'INSERT INTO...
抛出错误,打印变量显示我的$数组确实是一个数组:
ARRAY1: ArrayL: 2ARRAY2: array
。我在这里做错了什么?
答案 0 :(得分:11)
json_decode返回一个对象,除非你指定你想要一个带有第二个可选参数的数组:
json_decode(stripslashes($_POST['data']), true);
其他一些有用的建议:
使用var_dump进行调试。它将帮助您理解代码中任何对象/数组的结构。
你不应该通过帖子接受数据,并且在没有任何卫生条件的情况下在SQL查询中使用它,无论如何。我强烈建议你尽快解决。
答案 1 :(得分:2)
您在上一次分配中遗漏了->
:
$obj{'Lag'}
答案 2 :(得分:0)
最简单的方法是保罗指出,我会建议这个。但是如果您需要将数组转换为对象使用:
$newObject = (object) $oldArray;