0

所以,我有一个我正在编写的应用程序,在大多数情况下,它运行良好。

但是,有一些意想不到的行为,我一生都无法理解它为什么会这样。

该代码从 MySQL 表创建一个视图,然后提出一系列问题。这些是简单的是/否问题,并且(取决于结果)真标志设置为假。当只剩下一个真正的标志时,它会加载一个页面,该页面应该显示一张卡片,其中包含有关留下的角色的信息。

是/否是迭代视图并按应有的方式更改标志。但是,当剩下一个字符时,它会将所有标志重置为真,并显示所有字符,而不是一个字符。它必须与 MySQL 有关,但我看不出它可能是什么。

下面是 finalResult 方法所在的 results.class.php。

<?php

class result
{
    protected $Conn;

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

    }

    public function dropResult()
    {
        $drop = "DROP VIEW if EXISTS result;";
        $stmt = $this->Conn->prepare($drop);
        $stmt->execute(array());
    }

    public function createResult()
    {
        $view = "CREATE VIEW result AS SELECT id, flag, name, image, quote FROM person;";
        $stmt = $this->Conn->prepare($view);
        $stmt->execute(array());
        return $view;
    }

    public function resetFlag()
    {
        $update = "UPDATE person SET flag = true";
        $stmt = $this->Conn->prepare($update);
        $stmt->execute(array());

        }

    public function selectResult()
    {
        $select= "SELECT id, flag from result";
        $stmt = $this->Conn->prepare($select);
        $stmt->execute(array());
        $select = $stmt->fetchAll(PDO::FETCH_ASSOC);
        return $select;
    }
    Public function iterateResult($id)
    {
        $changeFlag = "UPDATE result SET flag = false WHERE  id= :id";
        $stmt = $this->Conn->prepare($changeFlag);
        $stmt->execute(array(':id' => $id));

    }
    public function countResult()
    {
        $flag = "SELECT flag from result WHERE flag = true";
        $stmt = $this->Conn->prepare($flag);
        $stmt->execute(array());
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }

    public function finalResult()
    {
        $characterResult = "SELECT name, image, quote FROM result WHERE flag = true;";
        $stmt = $this->Conn->prepare($characterResult);
        $stmt->execute(array());
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }

}


?>

这是 results.php 代码

<?php
$result = new result($Conn);
$dropResult = $result->dropResult();
$createResult = $result->createResult();
$resetFlag = $result ->resetFlag();
$finalCharacter = $result->finalResult();
$smarty->assign('result', $finalCharacter);

?>

我敢肯定这很简单,但我就是看不到这里的树木。有小费吗?

PS... 最初,我将 selectResult 方法作为 $finalCharacter 调用的方法,所以我出于绝望创建了一个新方法!!!

4

1 回答 1

0

解决它。原来我在两个控制器中有 resetFlag 方法,所以该方法在结果页面中使用并将标志重置为 1。删除了结果页面中的方法调用,并且 bob 是你的叔叔。感谢您的帮助...非常感谢。

于 2020-02-18T10:59:10.800 回答