gpt4 book ai didi

php - Mysql 循环遍历行来检查行,直到找到计数为零的行

转载 作者:行者123 更新时间:2023-11-29 10:52:29 25 4
gpt4 key购买 nike

我浏览了许多类似的解决方案,但找不到满足我要求的解决方案。

我想限制我的用户在 24 小时内为每个网址创建两个以上的短网址

人们正在滥用此功能并创建 10 多个网址,这会堵塞我的数据库。所以我想将它们限制为每个网址 2 个,如果超过则留言

现在我有这个检查来看看他们是否为每个网址做了多少

    $sql = "SELECT * FROM ShortUrls WHERE user_id='$user' AND vidID='$urlMe' AND time > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY))";
$result = $conn->query($sql);

echo "user created this many urls: " .$result->num_rows;
if ($result->num_rows > 2) {
// keep checking till find one less that 2
}

循环遍历 URL 数据库并检查他们是否在 24 小时内使用同一 URL 两次以上。如果他们在 24 小时内没有使用该网址超过两次,他们可以使用该网址创建一个新的缩短网址。

编辑我使用的解决方案:

$sql2 = "SELECT tube.vidID FROM tube LEFT JOIN ( SELECT COUNT(*) c, vidID FROM ShortUrls WHERE user_id='$user' AND time > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY)) GROUP BY vidID ) urls ON urls.vidID = tube.vidID WHERE urls.c < 2 LIMIT 1;";
$result = $conn->query($sql2);

if ($row = $result->fetch_assoc()) {
echo "You can add a URL to this video: " . htmlspecialchars($row['vidID']);
} else {
echo "All videos used up!";
}

希望这对其他人有用

最佳答案

您想查看哪些 vidID 在过去 24 小时内由同一 user_id 创建的行少于两行吗?

SELECT
COUNT(*) c, vidID
FROM
ShortUrls
WHERE
user_id = ?
AND time > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY))
GROUP BY
vidID
HAVING
c < 2

但是,如果您提前知道 vidID,并且您只关心该 vidID:

SELECT
COUNT(*)
FROM
ShortUrls
WHERE
user_id = ?
AND vidID = ?
AND time > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY))

如果您想在他们为 any vidID 创建了两个以上的情况下阻止他们,请尝试以下操作:

SELECT
COUNT(*) c, vidID
FROM
ShortUrls
WHERE
user_id = ?
AND time > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY))
GROUP BY
vidID
HAVING
c > 2

如果查询返回任何内容,则用户在过去 24 小时内为单个 vidID 创建了 2 个以上内容。

如果你想变得更奇特:

SELECT
COUNT(*)
FROM (
SELECT
COUNT(*) c, vidID
FROM
ShortUrls
WHERE
user_id = ?
AND time > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY))
GROUP BY
vidID
HAVING
c > 2
) i

关于php - Mysql 循环遍历行来检查行,直到找到计数为零的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43480695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com