首先,了解我掌握了哪些信息。
- 数据库结构有一个名为
NUM
的表,列是:- num_id
PRIMARY_KEY [AUTO-INCREMENT]
,num_from - 和num_to
CONSTRAINTS [two columns form a UNIQUE_VALUE]
,num_qtyDEFAULT [Qauntity is 1]
- num_id
- 用户输入两个
inputs
,我通过POST
方法得到这些值并且可以正常工作:
$from = $_POST['from'];
$to = $_POST['to'];
- 在数据库中插入行之前进行预检查(我已经成功完成):
- 输入值应来自
whole-numbers
的集合 $to
的值应大于或等于值$from
$from
和$to
之间的差异不应大于 30
- 输入值应来自
**PRE CHECKS I AM UNABLE TO IMPLEMENT:**
SUM 不应大于 2
。例如,如果用户输入值:
$from = 100;
$to = 125;
并且数据库具有以下值:
num_id | num_from | num_to | num_qty
1 100 120 1
2 103 131 1
- 如果用户从任何范围动态输入值,则值
SHOULD NOT GET INSERTED
和上述规则也应成立
, - 但我无法停止插入上述示例输入,因为数据库中的 FROM 和 TO 值不同,但范围确实以某种方式匹配,这就是为什么我不希望插入这些值
这是我拥有的所有信息,如果需要更改任何信息以使问题更易于理解,请告知
首先感谢"Malik Asif"
$qty= $_POST['qty'];
$qryString="SELECT SUM(num_qty) FROM num WHERE ";
for($i=$from;$i<=$to;$i++){
if($i==$to){
$qryString.= " ('" . $i . "' BETWEEN num_from AND num_to)";
}
else{
$qryString.= " ('" . $i . "' BETWEEN num_from AND num_to) OR";
}
}
$qtysum = mysqli_query($conn, $qryString);
$totalSum=$qtysum->fetch_row();
$sumIs = ($totalSum[0] + $qty) ;
if($sumIs > 2){ echo "error";}
else{ INSERT Query }
试试这个(如果某些问题变得更清晰,将更新):
SELECT anyColumnNameWhichWillBeSameInPossibleDuplicateEntries, COUNT(*) AS ENTRIES
FROM tableName
WHERE column_from > $from AND
column-to < $to
HAVING COUNT(*) > 1