<h2>User Profile: <?php if($sth->rowCount() > 0) {$row = $sth->fetch(PDO::FETCH_ASSOC);echo " {$row['uname']}";} else {echo "No data.";}?></h2>
<span class="two">Registered Date: <?php if($sth->rowCount() > 0) {$row = $sth->fetch(PDO::FETCH_ASSOC);echo " {$row['regDate']}";} else {echo "No data.";}?> </span><br />
<span class="three">Current Grade: <?php if($sth->rowCount() > 0) {$row = $sth->fetch(PDO::FETCH_ASSOC);echo " {$row['currGrade']}";} else {echo "No data.";}unset($sth);?> </span><br />
我得到的错误:致命错误:在第 30 行调用成员函数 rowCount((
第 30 行是:
<span class="three">Current Grade: <?php if($sth->rowCount() > 0) {$row = $sth->fetch(PDO::FETCH_ASSOC);echo " {$row['currGrade']}";} else {echo "No data.";}unset($sth);?> </span><br />
SQL 幕后:
#Get Student Info :: for Page Content
$pdo = new PDO('mysql:host=localhost;dbname=ureviewdu', $u, $p);
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$sth = $pdo->prepare('
SELECT uname, currGrade, regDate
FROM Student
WHERE usrID = ?;
;');
$sth->execute(array(
$userID
));
此更新的代码不会为每个查询生成任何内容...为什么?
你在每个块的末尾取消设置PDOStatement
$sth
变量。取消设置后,您将无法使用它。
您可能应该根据获取结果创建一个逻辑分支,例如
<?php if ($row = $sth->fetch(PDO::FETCH_ASSOC)) : ?>
<h2>User Profile: <?php echo htmlspecialchars($row['uname']) ?></h2>
<span class="two">Registered Date: <?php echo htmlspecialchars($row['regDate']) ?></span><br />
<span class="three">Current Grade: <?php echo htmlspecialchars($row['currGrade']) ?></span><br />
<?php $sth->closeCursor(); else : ?>
<h2>User Profile: No data.</h2>
<span class="two">Registered Date: No Data.</span><br />
<span class="three">Current Grade: No Data.</span><br />
<?php endif ?>
我认为每次您尝试获取列值时,实际上您也在结果集中前进一行。 $row = $sth->fetch(PDO::FETCH_ASSOC);
将一行分配给 $row
AND 并推进游标。