public function checkIfTeamExists($team) {
$array = array();
try {
$sth = $this -> db -> prepare("SELECT * FROM teams WHERE Name = :team");
$sth -> execute(array(':team' => $team));
foreach ($sth->fetchAll(PDO::FETCH_ASSOC) as $row) {
$array[] = $row;
}
return $array;
} catch (Exception $e) {
header('Location: /error');
}
}
的index.php
$URL = explode("/", $_SERVER['REQUEST_URI']);
$teamName = $URL[2];
$teamExists = $db -> checkIfTeamExists($teamName);
$teamExists = (count($teamExists) > 0);
print $teamExists;exit();
if ($teamExists) {
$teamNameUpper = ucwords(strtolower($teamName));
}
else {var_dump($teamExists);}
让我们将网址设置为localhost / team / Bulls。
在这种情况下, $URL[2]
是“公牛队”。
$teamExists = $db -> checkIfTeamExists($teamName);
会将$ teamExists的值设置为数组。
接下来,$teamExists = (count($teamExists) > 0);
会将$teamExists
的值设置为“true”(在这种情况下,这是正确的,因为数据库中存在“公牛队”)。
以下是问题所在:
正如您在第5行所见,print $teamExists;exit();
就在那里。它打印1,这是预期的结果。但是,如果我取走exit()
部分并让脚本按原样运行,它只执行if-else条件的“else”部分。这必须意味着$ teamExists的值已从1更改。
我无法理解我做错了什么。价值如何变化?
答案 0 :(得分:1)
要真的很挑剔我会将函数中的查询更改为“选择计数...”,然后测试以查看答案是否为> 0并返回true或false。您的主脚本将是
$URL = explode("/", $_SERVER['REQUEST_URI']);
$teamName = $URL[2];
$teamExists = $db -> checkIfTeamExists($teamName);
var_dump($teamExists);exit();
if ($teamExists) {
$teamNameUpper = ucwords(strtolower($teamName));
}
else {var_dump($teamExists);}
我已经将打印更改为var_dump,但几乎任何非假的都应该是真的。我很想知道你从var_dump得到了什么。