Почему возникает ошибка, когда я пытаюсь выполнить запрос с помощью R::exec из RedBeanPHP?

У меня есть код:

        $done_tasks = R::getCol('SELECT count(*) FROM tasks WHERE `status` = "done" AND id IN
        (SELECT task_id FROM tasksemployess WHERE employee_id = ?)', array($_SESSION['employee']['id']));

        $failed_tasks = R::getCol('SELECT count(*) FROM tasks WHERE `status` = "failed" AND id IN
        (SELECT task_id FROM tasksemployess WHERE employee_id = ?)', array($_SESSION['employee']['id']));

        $process_tasks = R::getCol('SELECT count(*) FROM tasks WHERE `status` = "in_process" 
        OR `status` = "cheking" OR `status` = "remaking" AND id IN
        (SELECT task_id FROM tasksemployess WHERE employee_id = ?)', array($_SESSION['employee']['id']));

        $avg_mark = R::getCol('SELECT avg(mark) FROM tasks WHERE id IN
        (SELECT task_id FROM tasksemployess WHERE employee_id = ?)', array($_SESSION['employee']['id']));

        R::exec('UPDATE FROM persresults SET done_tasks = ?, failed_tasks = ?, process_tasks = ?, avarage_mark = ?,
        WHERE employee_id = ?',array($done_tasks[0], $failed_tasks[0], $process_tasks[0], $avg_mark[0], $_SESSION['employee']['id']));

Все запросы кроме последнего возвращают массив, поэтому в последнем запросе я обращаюсь к ним как к массиву и с этим вроде бы все правильно, но:

ОБНОВЛЕНИЕ ИЗ persresults SET done_tasks = 3, failed_tasks = 0, process_tasks = 0, avarage_mark = '67.0000', WHERE employee_id = 19 Произошла ошибка: SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 У вас есть ошибка в синтаксисе SQL ; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «FROM persresults SET done_tasks = 3, failed_tasks = 0, process_tasks = 0, avarag» в строке 1

Как видите, значения для вставки передаются по мере необходимости, но почему-то возникает эта ошибка.


person Vladislav Finder    schedule 12.05.2019    source источник
comment
В запросе UPDATE не должно быть FROM. Просто удалите его.   -  person Nick    schedule 12.05.2019


Ответы (1)


Вы не должны использовать UPDATE FROM (просто UPDATE table_name), и у вас есть неправильная запятая перед WHERE в вашем обновлении

 R::exec('UPDATE persresults 
    SET done_tasks = ?
    , failed_tasks = ?
    , process_tasks = ?
    , avarage_mark = ?
   WHERE employee_id = ?',array($done_tasks[0], 
         $failed_tasks[0],
         $process_tasks[0],
         $avg_mark[0], $_SESSION['employee']['id']));
person scaisEdge    schedule 12.05.2019