Я не разработчик PHP, поэтому я могу делать что-то неправильно. Я пытаюсь декодировать строку JSON и вставлять некоторые значения в базу данных mysql. Я получаю действительный массив объектов json (проверен с помощью jsonlint), поэтому я добавляю их по одному в базу данных. Но php throws: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
. Что я здесь делаю неправильно?
, если вы хотите распечатать содержимое массива, используйте 'print_r ($ массив)' или 'var_dump ($ массив)', а не эхо –
Позаботьтесь об этом [*** SQL INJECTION ***] (http://wikipedia.org/wiki/SQL_injection)! – deceze
Возможно, я нашел ответ по ошибке, кто-то предлагает использовать второй параметр для json_decode. Является ли PHP немым, чтобы вернуть массив, который не является массивом? –