如何限制表格中每个类别的插入数量?我正在使用php和pdo。我有一些类别,每个类别必须有最多3个子类别。一切都存储在db中,表格看起来像这样。
说清楚!我在菜单中有一些类别,每个类别最多可以包含3个子类别。当然不是同名,但每个类别不能超过3个。我当时输入了一个,这意味着你可以在当时插入多个,但在db中它不能超过3个。
某些类别
- some subcategory
- some subcategory
- some subcategory
类别
id |类别|
子类
id | subcategory_name | id_category |
现在,我的代码看起来像这样。
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
为真,则显示错误,如果为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();
}
}
}
答案 0 :(得分:0)
您可以使用触发器阻止将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 ;