我见过这个和这个,但这些都对我的情况没有帮助,这就是为什么我要明智地提出一个以前被问过的问题。
我的代码是:
<?
$getGame = $database->prepare('SELECT * FROM mainSite_games WHERE id=:gameID');
?>
<div class='container_12'>
<div id='contentcont'>
<div id='content'>
<?
if (isset($_GET['gameID'])) {
$getGame->bindValue(':gameID',$GET['gameID'],PDO::PARAM_INT);
$getGame->execute();
$rows = $getGame->fetch(PDO::FETCH_ASSOC);
foreach ($rows as $game) {
$gameName = str_replace(' ','_',strtolower(stripslashes($game['gameName'])));
?>
<section class='<? echo $gameName; ?>'>
<h1><? echo stripslashes($game['gameName']); ?></h1>
<p><? echo stripslashes($game['gameDesc']); ?></p>
<article class='grid_5 alpha' style='float:left;'>
<h3><a href='viewQuests.php?gameID=<? echo $game['id'] ?>'>View <? echo stripslashes($game['gameName']); ?> Quests</a></h3>
<p>Offers the ability to see the available quests in <? echo stripslashes($game['gameName']); ?> along with information about them and a simple guide to go along with each.</p>
</article>
<article class='grid_5 omega' style='float:right;'>
<h3><a href='viewDB.php?gameID=<? echo $game['id'] ?>'>View <? echo stripslashes($game['gameName']); ?> Database</a></h3>
<p>Offers information about <? echo stripslashes($game['gameName']); ?> items, places, and characters. We try to be extensive with our information.</p>
</article>
</section>
<?
}
} else {
echo '<h3>Game ID is not set!</h3>;'
exit();
}
?>
</div>
</div>
</div>
</body>
</html>
<?
$database = null;
unset($database);
?>
数据库已初始化并连接到我的 globhead 文件提供的包含中:
$function = new srFunc();
try {
$database = new PDO('mysql:host=localhost;dbname=expunged;charset=utf8','expunged','expunged',array(
//database attributes
PDO::ATTR_EMULATE_PREPARES=>false, //use real prepared statements
PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION, //set errors to kill application
PDO::ATTR_PERSISTENT=>true //keep the connection open indefinitely
));
} catch (PDOException $e) {
$function->logPDO($e->getMessage());
exit();
}
logPDO 由我的函数类提供:
public function logPDO($err) {
try {
$filename = 'logPDO';
$filehandle = fopen($filename, 'a');
fwrite($filehandle,'[ '.date('Y-m-d Ga e').' ] '.$err."\n\n");
fclose($filehandle);
} catch (exception $e) {
return $e;
}
}
好的..所以现在我们知道我的代码是如何工作的——在我的 foreach 最上面的代码框中,它在我的错误日志中报告:
Invalid argument supplied for foreach
$rows = $getGame->fetch(PDO::FETCH_ASSOC)
现在,将 ( )上方的行更改为$rows = $getGame->fetchAll(PDO::FETCH_ASSOC)
(添加全部),没有任何报告。它只是一个空白页,我的样式和结构完好无损。
我不确定发生了什么,而且我对 PDO 很陌生,所以我不确定如何解决这个问题。
我尝试将其包装在 try,catch 块中,但没有报告任何内容(也没有使用我的 log 函数记录到文件中),所以我很茫然。有更多 PDO 经验的人看到我的代码有什么问题吗?