Как получить данные через PDO fetch и Update

Всем привет.

У меня есть запрос такого вида:

UPDATE 
                books 
            SET
                rating = @rating := (SELECT 
                ROUND(AVG(post_rating)) AS book_rating
            FROM
                posts
            WHERE 
                book_id = 5)
            WHERE id = 5;

            SELECT @rating AS book_rating;

По факту выполняется два запроса UPDATE и SELECT и результат отображается как book_rating = 3. При попытке разобрать данные:

$row = $stmt->fetch(PDO::FETCH_ASSOC);

я получаю ошибку: Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error.

Такая ошибка может появляться, когда пытаются получить данные из UPDATE. То есть $stmt->fetch видит только первый запрос UPDATE, но не второй запрос SELECT @rating.

Подскажите, можно ли каким-то образом получить данные с запросом такого вида?


Ответы (1 шт):

Автор решения: Ипатьев

Очень просто.

UPDATE и SELECT - это два запроса, и соответственно, надо выполнить два запроса к БД:

$pdo->query("UPDATE 
            books 
        SET
            rating = @rating := (SELECT 
            ROUND(AVG(post_rating)) AS book_rating
        FROM
            posts
        WHERE 
            book_id = 5)
        WHERE id = 5");
$rating = $pdo->query("SELECT @rating AS book_rating")->fetchColumn();
→ Ссылка