1
如何限制插入僅針對表中每個類別的3行?我正在使用php和pdo。我有一些類別,每個類別必須有最多3個子類別。一切都存儲在分貝,表格看起來像這樣。在插入期間允許表格中最多包含三行
要說清楚!我在菜單中有一些類別,每個類別最多可以有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
爲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();
}
}
}
在兩個插入查詢中應用「LIMIT 3」。謝謝。 –
一個解決方案是向'category'表中添加插入觸發器以防止插入。當嘗試插入第四個子類別時,您希望發生什麼? –
沒什麼特別的,只是說插入了最大數量的子類別。如果我限制3,這意味着我不能一次插入多3,或者3是表中最大的行數? –