могу понять, что за дичь. Вот кусок кода: $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 вместо данных из бд. Что я не так делаю? Может как-то надо сбрасывать драйвер бд между запросами или ещё какие-то премудрости, о которых я не догадываюсь?
скорее всего дело именно в том, что надо закрывать курсор именно после инсерта. Дело в том, что в модкс так не принято работать с апи, т.к. орм. орм насколько помню сам закрывает курсор после выполнения, возможно, поэтому раньше не сталкивался с подобной проблемой. для получения данных тоже запрос пожно конструировать через квери билдер а выполнять через стейтмент
Обсуждают сегодня