gpt4 book ai didi

php - 如果现有范围内不存在给定数字,则插入记录

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

假设我有一个这样的数据库结构。

sp_frommem    sp_tomem
1 1000

现在,如果我想插入一条新记录,其中 sp_frommem 为 5(示例),sp_tomem 为 750(示例),那么它将返回错误,例如“您无法插入数据库在此范围内,因为覆盖该范围的范围已经存在”。但是,如果我尝试插入一条新记录,其中 sp_frommem 是任何大于 1000 的数字(例如 1500),而 sp_tomem 是任何大于 sp_formem< 的数字,那么记录插入应该成功。

现在假设表中有更多字段。

sp_frommem    sp_tomem
1 1000
1500 4000
4001 7500

现在我可以在这里插入一条记录,其中包含从 1001 到 1499 的任何数字(因为这个范围仍然是空闲的)以及从 7501 到以上的任何数字。如何实现这一目标?我尝试检查以下查询,但它没有按预期工作。

$chk = $pdo->prepare("SELECT COUNT(*) as cnt FROM signup_promotion WHERE sp_frommem >= :from or sp_tomem <= :to");
$chk-> bindValue(':from', $from);
$chk-> bindValue(':to', $to);
$chk-> execute();
$chf = $chk->fetch();

if($chf['cnt'] > 0){
$msg = "<div class='alert alert-danger'>A Signup Bonus within the ranges mentioned already exists.</div>";
}else{
// INSERT RECORD HERE
}

最佳答案

SELECT COUNT(*) AS cnt FROM signup_promotion WHERE (:from BETWEEN sp_frommem AND sp_tomem) OR (:to BETWEEN sp_frommem AND sp_tomem)

应该可以工作。只需比较 cnt 是否等于 0(这就是冲突)。您还可以使用:

SELECT * FROM signup_promotion WHERE (:from BETWEEN sp_frommem AND sp_tomem) OR (:to BETWEEN sp_frommem AND sp_tomem)

并输出冲突,以便在时隙可用时向用户提供概览。

关于php - 如果现有范围内不存在给定数字,则插入记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49306773/

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