Использование MySQL VIEW в PHP коде, возвращающем пустой массив - PullRequest
0 голосов
/ 06 февраля 2020

Я создал представление в MySQL, которое хочу перебирать и удалять строки, если выполняются определенные условия. Он использует шаблонизатор Smarty.

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

Однако при попытке использовать его в PHP он возвращает пустой массив. Я не понимаю, почему.

У меня есть класс, контроллер и шаблон. Я использовал класс и контроллер на нескольких других страницах с кодом SQL без проблем. Проблема возникает только при использовании VIEW вместо обычной команды выбора.

Vardump в коде php показывает пустой массив.

--- gameview.class.php

<?php

class gameView
{
    protected $Conn;

    public function __construct($Conn)
    {
        $this->Conn = $Conn;

    }

    public function createGameView()
    {
        $drop = "DROP VIEW if EXISTS gameview;";
        $stmt = $this->Conn->prepare($drop);
        $stmt ->execute(array());
        $query = "CREATE VIEW gameview AS SELECT id, name, image, quote FROM person;";
        $stmt = $this->Conn->prepare($query);
        $stmt->execute(array());
        $gameView = $stmt->fetchAll(PDO::FETCH_ASSOC);
        return $gameView;
    }
}

?>
--- gameView.php

<?php
$gameView = new gameView($Conn);
$finalCharacter = $gameView->createGameView();
var_dump($finalCharacter);
exit();
$smarty->assign('game_view', $finalCharacter);
?>
gameView.tpl

{extends file="layouts/main.tpl"}
{block name="body"}
    <div class="text-center">
        <div class="css-selector">
            <h1 class="custom"> The Force is STRONG with me!!!</h1>
            <h1 class="custom">The character that you selected was...</h1>
        </div>
    </div>
    {foreach from=$game_view item=finalCharacter}
        <div class="col-md-4"></div>
        <div class="col-md-4">
            <div class="card">
                <div class="text-center">
                    <img class="card-img-top" src="{$finalCharacter.image}" alt="Final Character">
                    <div class="card-body">
                        <div class="card css-selector bg-dark">
                            <h5 class="card-title">{$finalCharacter.p_name}</h5>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="col-md-4"></div>
        <div class="text-center">
        <p class="custom">{$finalCharacter.quote}</p>
        </div>
    {/foreach}
    <div class="text-center">
        <div class="css-selector">
            <h1 class="custom">WAS I CORRECT?</h1>
        </div>
    </div>
    <div class="row">
        <div class="col-md-4"></div>
        <div class="col-md-4">
            <div class="text-center">
                <a class="btn btn-success" href="index.php?p=success">Yes</a>
                <a class="btn btn-danger" href="mailto:S199289@uos.ac.uk?subject=I chose 'character name' but the JMR predicted 'character name'!">
                    No</a>
                <a class="btn btn-warning" href="index.php?p=characterchoose">Try Again?</a>
            </div>
        </div>
        <div class="col-md-4"></div>
    </div>
{/block}
...