-1

есть вот такой код:

<?php 
    require "db.php";  
    header('Content-Type: application/json; charset=utf-8');
$login = $_SESSION['logged_user']-&gt;login;
$settings = R::findOne('users', 'WHERE `login`=?', [$login]);

if ($_POST['type'] == 'simple'){
    $settings-&gt;$_POST['parameter'] = $_POST['value'];
    R::store($settings);
}
$ArrayParametr = [
    'sound',
    $settings-&gt;sound
];
$ArrayParametr = [
    'theme',
    $settings-&gt;theme
];
$ArrayParametr = [
    'block',
    $settings-&gt;block
];
$ArrayParametr = [
    'language',
    $settings-&gt;language
];
$ArrayParametr = [
    'vibro',
    $settings-&gt;vibro
];
echo( json($ArrayParametr) );

?>

Как видите в 8 строке, я не буквально задаю параметр, а беру его из POST запроса. Подозреваю что ошибка там (500 ошибка), валидатор выдает что всё в порядке. Тем не менее скрипт не работает. Что может быть не так? А вернее как правильно написать 8 строку?

u_mulder
  • 3,602
artemgh
  • 659
  • 5
  • 20

1 Answers1

0

Спасибо всём, особенно Алексею Шиманскому. Вот итоговый рабочий код:

<?php 
    require "db.php";  
    header('Content-Type: application/json; charset=utf-8');
$login = $_SESSION['logged_user']-&gt;login;
$settings = R::findOne('users', 'WHERE `login`=?', [$login]);

if ($_POST['type'] == 'simple'){
    $settings-&gt;{$_POST['parameter']} = $_POST['value'];
    R::store($settings);
}
$ArrayParameter[] = [
    'sound',
    $settings-&gt;sound
];
$ArrayParameter[] = [
    'theme',
    $settings-&gt;theme
];
$ArrayParameter[] = [
    'block',
    $settings-&gt;block
];
$ArrayParameter[] = [
    'language',
    $settings-&gt;language
];
$ArrayParameter[] = [
    'vibro',
    $settings-&gt;vibro
];

echo( json_encode($ArrayParameter));

?>

Ошибка была в 8 строке, после названия массива не поставил квадратные скобки, поскольку массив двумерный и плюс вместо json, надо использовать json_encode.

artemgh
  • 659
  • 5
  • 20