所以,我有一个我正在编写的应用程序,在大多数情况下,它运行良好。
但是,有一些意想不到的行为,我一生都无法理解它为什么会这样。
该代码从 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 调用的方法,所以我出于绝望创建了一个新方法!!!