想要根据行数限制具有相应列名值的插入查询

Want to limit the insert query with respective column name's value according to the row count

我想根据行数限制具有相应列名值的插入查询。我想要做的是,有 5 个区域,每个区域只接受 4 个值,它将插入到数据库中。如果我在同一区域添加更多值,它必须显示警报“最大值为 4”。

if ($chk=='issue'){
    $sql="SELECT count(*) 
            from access_request.tbl_sealcable 
            where seal_area='.$seal_area'";
    $result= mysqli_query($conn,$sql);
    if (mysqli_num_rows($result) < 5){
        $barcodeArray = explode(",",$seal_barcode);
        foreach($barcodeArray as $value){
            $seal_barcode = $value;
            $sql1 = "INSERT INTO access_request.tbl_sealcable 
                            (seal_barcode, seal_area, dt_issue, 
                            issue_admin, receive_by, receive_id) 
                    VALUES ('$seal_barcode', '$seal_area', now(), 
                            '$admin_name', '$receive_by', '$receive_id')";
            $result1 = mysqli_query($conn,$sql1);
    }
} else {
    echo '<script language="javascript">';
    echo 'alert("Limit exceeded.")';
    echo '</script>';
}

A COUNT() 查询将 return 1 行 始终,即使计数为零,您正在测试行数 return在这一行

if (mysqli_num_rows($result) < 5){

当然不行,你需要从结果集中获取计数,所以

  1. 将查询更改为 COUNT(*) as cnt 然后您可以更轻松地访问结果列

  2. 获取结果集并测试cnt

    的值
$row = $result->fetch_assoc();
if ($row['cnt'] >= 4) {

    . . .
}

大注

您的脚本对 SQL Injection Attack 开放。 甚至 if you are escaping inputs, its not safe! 您应该始终使用 prepared parameterized statementsMYSQLI_PDO API 中,而不是将用户提供的值连接到查询中。永远不要相信任何用户输入!