<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
));
这个更新的代码不会为每个查询产生任何结果......为什么?
答案 0 :(得分:1)
我认为每次尝试获取列值时,实际上您也会在结果集中前进一行。 $row = $sth->fetch(PDO::FETCH_ASSOC);
向$row
分配一行并前进光标。
答案 1 :(得分:1)
您在每个块的末尾取消设置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 ?>