php - 显示从 MySQL 获取的 15 个元素的限制(而我被迫使用 15 以上的 LIMIT)

标签 php mysql

我正在尝试显示我的成员(member)的 15 张个人资料照片的列表。

有一列名为settings,看起来像0, 1, 1, 1

我只能显示上面第一个数字为 1 的人的照片。

由于我无法直接获取第一个数字为 1 的人,因此我必须获取所有人,无论数字多少。然后我将只显示拥有 1 套的人。 (有什么办法可以解决查询中的问题吗?)

大约 20% 的成员(member)将 0 作为此数字,因此在我的查询中,我必须将 LIMIT 设置为高于 15(我将其设置为 30)现在,否则在 15 岁的时候我会得到一个包含少于 15 张图片的列表)。

但是,我必须在列表中准确显示 15 个人,并且结果通常在 15-30 人之间(因为 limit = 30)。

我尝试使用 for/while 循环,但我不确定将其放置在哪里。

这是我的代码:

    $query = $conn->prepare("SELECT picture_path, profile_picture, username, last_visit, signup_date, settings FROM tusers 
                WHERE profile_picture IS NOT NULL 
                AND sex = 1 
                AND  last_visit BETWEEN CURDATE() - INTERVAL 9 DAY AND CURDATE() 
                AND signup_date < CURDATE() - INTERVAL 10 DAY 
                ORDER BY RAND()
                LIMIT 30");
    $query->execute();
    $members_results = $query->fetchAll(PDO::FETCH_ASSOC);

    foreach ($members_results as $key => $member) {
        $meet_new_people_enabled = explode(",", $member['settings']);

        if ($meet_new_people_enabled[0] == '1') {
            $picture_path = "http://www.mySite.com/" . $member['picture_path'] . "/" . $member['profile_picture']; 
            echo '<figure class="member"><a href="' . $member['username'] . '"><img src="' . $picture_path . '" title="' . $member['settings'] . '" width="100" height="100" /></a></figure>';
        }
    }

您将如何解决这个问题,以便准确显示 15 个人?

谢谢

最佳答案

您存储的数据有误。

数据库设计的基本规则(更正式地称为第一范式或 1NF)是每列应该保存 1 且仅 1 条数据(更正式地讲,所有数据必须是原子的)。

CSV 数据本质上不是原子数据。它是存储在以逗号分隔的列表中的多个值。正如您刚刚发现的那样,如果您拥有此类数据,您将很难操作和查询它。

您应该通过将数据放入从属表的设置列中并使用外键将其与主表中的行关联起来来标准化数据。

如果这不是一个选项,您至少应该为每个设置值有一列。

关于php - 显示从 MySQL 获取的 15 个元素的限制(而我被迫使用 15 以上的 LIMIT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18980184/

相关文章:

php - PHP应该是[END_OBJECT],但得到了[FIELD_NAME],可能有太多的查询子句

mysql - Laravel Eloquent 在子查询中有两个 “WHERE NOT IN”

java - 使用 DriverManager 将 WAMP 上的 Java 连接到 MySQL

php - 使用 Dreamweaver 将多个检查值插入到一个数据库字段中

php - 如何使用正则表达式从 PHP 中的 UTF8 字符串中正确删除重复的空白字符?

php - 如果我从另一个 GNU GPL 应用程序中获得灵感开发一个程序会发生什么?

php - 从数据库中删除记录的最佳算法?

PHP MySQL 函数单元测试

javascript - 数字插入数据库,但不插入字符或数字/字符

php - 使用 Form Key 和 AJAX 提交表单