могу понять, что за дичь. Вот кусок кода: $id = $_POST['id'];
                  
                  
                  $oldid = $_POST['oldid'];
                  
                  
                  if (($oldid == 0) && ($account > 0) || ($oldid > 0)) {
                  
                  
                    $sql = "INSERT INTO user_lessons (student_id,id) VALUES (" . $modx->user->id . ', ' . $modx->quote($id) . '); ' . ($oldid == 0 ? '' : ('DELETE FROM user_lessons WHERE (id = ' . $modx->quote($oldid) . ' ) AND (student_id = ' . $modx->user->id . ');'));
                  
                  
                    $stmt = $modx->prepare($sql);
                  
                  
                    //этот запрос выполняется корректно
                  
                  
                    if (!$stmt->execute([])) {
                  
                  
                      //...
                  
                  
                    } else {
                  
                  
                      if ($oldid == 0) {
                  
                  
                        //...
                  
                  
                      } else {
                  
                  
                        //вот с этого места начинаются странности
                  
                  
                        $sql1 = "SELECT id, date, teacher FROM calendar WHERE (id = " . $modx->quote($id) . ') OR (id = ' . $modx->quote($oldid) . ');';
                  
                  
                        $statement = $modx->prepare($sql1);
                  
                  
                        $statement->execute();
                  
                  
                        $result = $statement->fetchAll(PDO::FETCH_ASSOC);
                  
                  
                        // что бы я не делал, $result всегда равен false, хотя этот же код в консоле или в пхпмайадмин возвращает корректные данные.
                  
                  
                        foreach ($result as $item) {
                  
                  
                          //обработка результата
                  
                  
                        }
                  
                  
                      }
                  
                  
                      $res = '{"account" : ' . $account . "}";
                  
                  
                    }
                  
                  
                  } первый скуль-запрос выполняется корректно а вот вместо второго всегда приходит булевое значение, вроде фелс, тру не замечал. Штука в том, что если этот второй запрос вынести в консоль, то всё корректно отрабатывает, если запрос выполнить в пхп майадмине, тоже всё ок, а тут не работает, упорно возвращает false вместо данных из бд. Что я не так делаю? Может как-то надо сбрасывать драйвер бд между запросами или ещё какие-то премудрости, о которых я не догадываюсь?
                  
                  
                
скорее всего дело именно в том, что надо закрывать курсор именно после инсерта. Дело в том, что в модкс так не принято работать с апи, т.к. орм. орм насколько помню сам закрывает курсор после выполнения, возможно, поэтому раньше не сталкивался с подобной проблемой. для получения данных тоже запрос пожно конструировать через квери билдер а выполнять через стейтмент
Обсуждают сегодня