Удаление и создание представления MySQL в PHP не работает - PullRequest
0 голосов
/ 11 февраля 2020

У меня проблема с кодом PHP / MySQL.

Мне нужно представление под названием gameview для игры Star Wars, которую я пишу.

Если я создал представление в MySQL, тогда код работает отлично. Тем не менее, мне нужно, чтобы этот вид был отброшен при каждом запуске игры. Так что, если я начну без представления «GameView», присутствующего в БД, страница не может быть отображена из-за того, что представление не существует. Однако, как только я вручную добавляю представление в MySQL, оно работает. Я не понимаю, почему.

Код класса

<?php

class gameView
{
    protected $Conn;

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

    }

    public function dropGameView()
    {
        $drop = "DROP VIEW if EXISTS gameview;";
        $stmt = $this->Conn->prepare($drop);
        $stmt->execute(array());
    }
    public function createGameView()
    {
        $view = "CREATE VIEW gameview AS SELECT id, name, image, quote FROM person;";
        $stmt = $this->Conn->prepare($view);
        $stmt->execute(array());
    }

    public function useGameView()
    {
        $query = "SELECT * from gameview";
        $stmt = $this->Conn->prepare($query);
        $stmt->execute(array());
        $gameView = $stmt->fetchAll(PDO::FETCH_ASSOC);
        return $gameView;
    }
}

?>

PHP код

<?php
$gameView = new gameView($Conn);
$finalCharacter = $gameView->useGameView();
$smarty->assign('game_view', $finalCharacter);


?>

1 Ответ

0 голосов
/ 11 февраля 2020

Ну .... каменные вороны. Я думал, что это будет слишком просто для работы, но это сделало!

<?php
$gameView = new gameView($Conn);
$dropGameView = $gameView->dropGameView();
$smarty->assign('drop_gameview', $dropGameView);
$createGameView = $gameView->createGameView();
$smarty->assign('create_gameview', $createGameView);
$finalCharacter = $gameView->useGameView();
$smarty->assign('game_view', $finalCharacter);


?>

Теперь взломать и использовать вид.

...