在PHP中删除和创建MySQL视图不起作用

在PHP中删除和创建MySQL视图不起作用,php,mysql,smarty,Php,Mysql,Smarty,我对一些PHP/MySQL代码有问题 我需要一个名为gameview的视图,用于我正在编写的星球大战游戏 如果我在MySQL中创建了视图,那么代码运行得非常好。但是,我需要在每次游戏开始时删除此视图。因此,如果我在数据库中没有“gameview”视图的情况下启动,由于该视图不存在,页面将无法显示。然而,当我将视图手动添加到MySQL中时,它就可以工作了。我不明白为什么 类别代码 <?php class gameView { protected $Conn; public

我对一些PHP/MySQL代码有问题

我需要一个名为gameview的视图,用于我正在编写的星球大战游戏

如果我在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);


?>

好吧。。。。用石头打死乌鸦。我原以为这太简单了,不可能成功,但它成功了

<?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);


?>


现在打开并使用该视图。

您从未调用过
createGameView
您每次都需要删除该视图的可能原因是什么?我需要在每次运行游戏时都删除该视图。该视图是一个角色列表,我需要将其向下迭代到1,然后重新启动游戏。您不需要删除它并重新创建。视图就像一个存储的查询(从某种意义上讲),对您来说是一个临时的排序表。如果需要刷新该视图的结果,只需再次查询该视图。不需要删除/创建--这没有任何用处。是的,我需要一个视图。我在数据库中有许多链接表。该视图用于从表中删除角色,直到剩下1个角色,并在最后显示该角色(这基本上是一个星球大战猜猜我为uni做的游戏)。如果球员想再次比赛,我需要重新设置桌子。如果我创建视图,删除其中的字符,我将如何使其以原始状态重新加载?我是一个软件开发的新手。。。