在数据库调用时收集一个字段:: error php

时间:2011-08-16 22:46:56

标签: php mysql pdo

        <h2>User Profile: <?php if($sth->rowCount() > 0) {$row = $sth->fetch(PDO::FETCH_ASSOC);echo "&nbsp;{$row['uname']}";} else {echo "No data.";}?></h2>
        <span class="two">Registered Date: <?php if($sth->rowCount() > 0) {$row = $sth->fetch(PDO::FETCH_ASSOC);echo "&nbsp;{$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 "&nbsp;{$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 "&nbsp;{$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
));

这个更新的代码不会为每个查询产生任何结果......为什么?

2 个答案:

答案 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 ?>