php - PDO 行数困惑

标签 php mysql pdo

我正在制作一个登录页面,如果 SELECT 查询返回带有用户名和密码的匹配行,那么它会检查数据库中的匹配值,那么它将返回行计数 1。当我回显时,我现在的编码方式存储行数的变量由于某种原因会返回 26,我不确定为什么。

如果我做错了什么,或者这是正常行为,有人会解释一下吗?这个值(value)从何而来?

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

}

最佳答案

您的代码 $rowCount = count($row); 正在计算当前行中的列 - 而不是查询返回的行数。

同样,您正在回显第二个 count 相关变量 $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;

此外,您当前正在使用 PDO 的 rowCount在选择用户之前,您正在正确使用它。您可以将那个结果存储到一个变量中,并用它来告诉您接收了多少行:

$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 ....

关于php - PDO 行数困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13216033/

相关文章:

php - Laravel 8 storage/framework/cache/data/ee 文件夹将用户设置为root :root rather than apache:apache permission denied

PHP 和 Python 集成 : Calling python scripts from PHP page and respond back to it

php - 当我使用 composer 2 时,Heroku 检测到 composer 1

php - 在 PHP 中声明静态函数有什么意义?

php - 如何在不使用重音的情况下搜索有重音的名字?

mysql - 通过保留表中的最小行来删除重复记录

php - 将文件以 blob 格式插入数据库表

mysql - 如何用mysql+PDO中的数据制作成长宝宝图表

mysql - 免费的BSD。 nginx、php-fpm、PDO_mysql 驱动程序不起作用

Php PDO mysql 给出与 mysql workbench 不同的结果