0

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

$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'] . ' ! ' ;
    }
}

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

4

2 回答 2

0

fetchColumn返回第一列的一个值并将结果指针移动到下一个数据集。因此,当调用 时fetch(),您不会得到第一个数据集,而是第二个数据集(或者没有,如果只有一行)。

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

于 2013-01-24T18:24:09.297 回答
0

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

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

于 2013-01-24T18:24:22.587 回答