我一直在努力运行以下代码,但它没有返回任何内容:
try {
$DBH = new PDO("mysql:host=$dbHost;dbname=$dbDatabase", $dbUser, $dbPass);
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$STH = $DBH->prepare('SELECT * FROM `component`');
# setting the fetch mode
$STH->setFetchMode(PDO::FETCH_ASSOC);
while($row = $STH->fetchAll()) {
echo $row['cid'] . "n";
echo $row['cdesc'] . "n";
echo $row['cinfo'] . "n";
}
}
catch(PDOException $e) {
echo "I'm sorry. I'm afraid I can't do that.";
echo $e->getMessage();
}
如有任何协助,我们将不胜感激。Rgds,Stew
fetchAll
返回所有行,如果您想迭代结果,可以使用fetch
:
while($row = $STH->fetch())
或者,如果你想坚持使用fetchAll()
:
$rows = $STH->fetchAll();
foreach($row in $rows){
...
}
正如bitWorking所指出的,您也错过了对execute
:的调用
$STH = $DBH->prepare('SELECT * FROM `component`');
$STH->execute();
# setting the fetch mode
$STH->setFetchMode(PDO::FETCH_ASSOC);
您错过了execute方法。还有fetchAll的错误用法。
参见示例#1获取结果集中的所有剩余行
fetchMode的另一个例子:
$STH = $DBH->prepare('SELECT * FROM `component`');
$STH->execute();
$STH->setFetchMode(PDO::FETCH_ASSOC);
// since PDOStatement implements Traversable you can directly iterate
foreach ($STH as $row) {
echo $row['cid'] . "n";
}