0

SELECTクエリがユーザー名とパスワードで一致する行を返す場合、データベース内の一致する値をチェックするログインページを作成しています。これにより、行数が1になります。何らかの理由で26をエコーする行数を格納しますが、その理由はわかりません。

私が何か間違ったことをしているのか、それともこれが正常な動作であり、その価値がどこから来ているのかを誰かが説明しますか?

function checkLogin($conn,$myusername,$mypassword,$row,$row1){
   try {  
        $sql = "SELECT COUNT(*) FROM CLL_users WHERE user_name = 'user' AND password = 'XXXX'";
        if ($results = $conn->query($sql)) {

            if($results->fetchColumn() > 0) {

                $sql = "SELECT * FROM CLL_users WHERE user_name = 'user' AND password = 'XXXXX'";
                foreach ($conn->query($sql) as $row)
                {               
                   $rowCount = count($row);
                   echo $rowCount;
                    print ("Username: " . $row['user_name'] . "<br>");
                     print ("Username: " . $row['password'] . "<br>");

                    }

                    echo $count;
          }
        else {
            print "NO ROWS";
        }
        }
        } catch (PDOException $e){
    echo 'Connection failed: ' . $e->getMessage();
}

}
4

2 に答える 2

2

コードは$rowCount = count($row);、クエリによって返された行の数ではなく、現在の行の列をカウントしています。

同じように、2番目のカウント関連変数をエコーし​​て$countいますが、宣言することも、コードでインクリメントすることもありません。これは、ループする行の数をカウントすることになっているようです。これが当てはまる場合は、ループの前と同じように設定し、ループ内で$count = 0;使用する必要があります。$count++;

$count = 0;
foreach ($conn->query($sql) as $row) {
    print ("Username: " . $row['user_name'] . "<br>");
    print ("Username: " . $row['password'] . "<br>");
    $count++;
}
echo $count;

rowCountまた、ユーザーを選択する前に現在PDOを使用しており、適切に使用しています。その結果を変数に格納し、それを使用して、受け取っている行数を知ることができます。

$sql = "SELECT COUNT(*) FROM CLL_users WHERE user_name = 'user' AND password = 'XXXX'";
if ($results = $conn->query($sql)) {
    $numRows = $results->fetchColumn();
    if($numRows > 0) {
        ... rest of your code ....
于 2012-11-04T04:19:44.943 に答える
1
function checkLogin($conn,$myusername,$mypassword,$row,$row1)
{
   try
   {  
       $sql = "SELECT COUNT(*) FROM CLL_users WHERE user_name = 'user' AND password = 'XXXX'";
       if ($results = $conn->query($sql))
       {

           $count = $results->fetchColumn();
           echo "$count\n";

           if($count > 0)
           {
               $sql = "SELECT * FROM CLL_users WHERE user_name = 'user' AND password = 'XXXXX'";
               foreach ($conn->query($sql) as $row)
               {               
                   print ("Username: " . $row['user_name'] . "<br>");
                   print ("Username: " . $row['password'] . "<br>");     
               }
           }
           else
           {
               print "NO ROWS";
           }
       }
   }
   catch (PDOException $e)
   {
       echo 'Connection failed: ' . $e->getMessage();
   }

}
于 2012-11-04T04:24:36.860 に答える