0

データベースからデータを選択するコードを書きました。ステートメントが何かを返すかどうかをテストし、fetchColumn()null でない場合は with ループを使用して結果を表示します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

rowCount()ではない行数を決定するメソッドを使用する必要がありますfetchColumn()fetchColumn()実際には、データの最初の行にアクセスできなくなる場所に結果セット内のポインターを進めます。

このページの大きな赤い警告に注意してくださいhttp://php.net/manual/en/pdostatement.fetchcolumn.php

于 2013-01-24T18:24:22.587 に答える
0

fetchColumn最初の列の 1 つの値を返し、結果ポインターを次のデータセットに移動しますしたがって、 を呼び出すとfetch()、最初のデータセットではなく2 番目のデータセットが取得されます (行が 1 つしかない場合は何も取得されません)。

を使用する代わりに、結果があるかどうかを確認するためにfetchColumn()使用できrowCount()ます。

于 2013-01-24T18:24:09.297 に答える