检查结果后,显示语句结果不起作用

时间:2013-01-24 18:18:05

标签: php mysql pdo

我已经编写了一个代码来从我的数据库中选择数据,我测试该语句是否返回fetchColumn()的某些内容,如果使用fetch()的循环它不为null,我会显示结果。但是当结果存在的时候它并没有向我显示任何东西..这是我的代码:

$req = $bdd->prepare('SELECT NOM_Etudiant, PRENOM_Etudiant FROM Etudiant WHERE CNE_Etudiant = :cnev AND PASS_Etudiant = :passv');
$req->execute(array('cnev' => $cne, 'passv' => $pass));

$count = $req->fetchColumn();
if(!$count) {
    header('Location: authentification_etud.php?status=invalid');
}
else {
    // Doesn't work
    while ($donnees = $req->fetch())
    {
        echo '<strong>Bienvenue </strong>' . $donnees['NOM_Etudiant'] . ' ' . $donnees['PRENOM_Etudiant'] . ' ! ' ;
    }
}

你知道它为什么不起作用吗?谢谢:))

2 个答案:

答案 0 :(得分:0)

fetchColumn返回第一列的一个值,将结果指针移动到下一个数据集。因此,在调用fetch()时,您不会获得第一个,而是第二个数据集(如果只有一行,则没有任何内容)。

您可以使用fetchColumn()来检查是否有结果,而不是使用rowCount()

答案 1 :(得分:0)

您应该使用rowCount()方法来确定不是fetchColumn()的行数。 fetchColumn()实际上会将结果集中的指针前进到您将无法再访问第一行数据的位置。

请注意此页面上的大红色警告http://php.net/manual/en/pdostatement.fetchcolumn.php