gpt4 book ai didi

php - 插入期间表中最多允许三行

转载 作者:行者123 更新时间:2023-11-30 22:43:02 25 4
gpt4 key购买 nike

如何将表中每个类别的插入限制为仅 3 行?我正在使用 php 和 pdo。我有一些类别,每个类别最多必须有 3 个子类别。一切都存储在数据库中,表看起来像这样。

说清楚!我在菜单中有一些类别,每个类别最多可以有 3 个子类别。当然不能同名,但每个类别不能超过3个。我当时输入了一个,这意味着您可以一次插入多个,但在 db 中不能超过 3 个。

一些类别

 - some subcategory
- some subcategory
- some subcategory

类别

编号 |类别 |

子类别

编号 |子类别名称 | id_类别 |

目前,我的代码如下所示。

    if(isset($_POST['sub'])) {

$InputSubcategory = $_POST['InputSubcategory'];
$InputId = $_POST['InputId'];

$sql = $pdo->prepare("INSERT INTO subcategory(subcategory_name,id_category)
VALUES(:field1,:field2)");
$sql->execute(array(':field1' => $InputSubcategory,
':field2' => $InputId));
$affected_rows = $sql->rowCount();
if ($affected_rows > 0) {
header( "refresh:0" );
die();
}
}
if(isset($_POST['cat'])) {

$InputCategory = $_POST['InputCategory'];

$sql = $pdo->prepare("INSERT INTO category(category)
VALUES(:field1)");
$sql->execute(array(':field1' => $InputCategory));
$affected_rows = $sql->rowCount();
if ($affected_rows > 0) {
header( "refresh:0" );
die();
}
}

编辑:我成功了!接下来是我所做的。 Count() 对每个表中的行,然后在if中比较统计的个数是否大于等于3。如果if为true则提示错误,如果为false则继续插入。

    if(isset($_POST['cat'])) {

$nRows = $pdo->query('select count(*) from category')->fetchColumn();

if ($nRows >= 3) {
echo'
<div class="alert alert-warning">
<span class="glyphicon glyphicon-ok"></span> <strong>Warning</strong>
<hr class="message-inner-separator">
<p>You reach maximum category limit.</p>
</div>';
header( "refresh:2;url=insert.php" );
} else {

$InputCategory = $_POST['InputCategory'];

$sql = $pdo->prepare("INSERT INTO category(category)
VALUES(:field1)");
$sql->execute(array(':field1' => $InputCategory));
$affected_rows = $sql->rowCount();
if ($affected_rows > 0) {
header( "refresh:0" );
die();
}

}
}

最佳答案

您可以使用触发器阻止超过 3 个插入到数据库本身。

DELIMITER $$
CREATE TRIGGER subcategory_bi BEFORE INSERT ON subcategory FOR EACH ROW
BEGIN

IF (SELECT COUNT(1) FROM subcategory sc WHERE sc.category_id = NEW.category_id) >= 3 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'this category already has the max allowed subcategories';
END IF;

END $$
DELIMITER ;

关于php - 插入期间表中最多允许三行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30571907/

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