在数据库调用中收集一个字段::错误 php


Gather one field at a database call:: error php

        <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
));

此更新的代码不会为每个查询生成任何内容...为什么?

你在每个块的末尾取消设置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 并推进游标。