外鍵我有3個表:更新多行與選擇的形式
文件(的file_id,名稱等),
組(GROUP_ID,姓名等)和file_group(file_id,group_id)=>在這裏使用外鍵和來自兩個表(文件和組)的主要 鍵。
我的問題是:我無法對我的表file_group
進行更新。
錯誤消息:完整性約束衝突:1062 Duplcate進入 '40 -6' 的重點小學....
我知道爲什麼它告訴我,但我仍然不能使它發揮作用。
的代碼是:
<form method="post" action="edit.php">
<select multiple="multiple" name="groups" class="form-control" >
<option value=1>Admin</option>
<option value=2>project_1</option>
<option value=11>Project_Bio</option>
<option value=12>Project_3</option>
<option value=20>Project_Off</option>
<option value=22>Project_zed</option>
</select>
</form>
<?php
$id = 40;
if(!empty($_POST)){
//signleton to get the table where i want to make the update
$fc = $app->getTable('fc');
$new_grps = $_POST['groups'];
foreach($new_grps as $k => $new_grp){
$fc->update($id,[
'group_id' => $new_group
]);
}
}
?>
在我的桌子file_group
,一個文件可以有2組。 因此,代碼嘗試使用相同的數據進行相同的更新。對我來說,似乎循環不起作用!
任何提示?
的Var_dump();
給出如下:
array(2){
[0]=>string(1)"11"
[1] =>string(2)"20"
}
數據表結構:
--
-- Table structure for file
--
CREATE TABLE files (
file_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
description TEXT DEFAULT NULL,
owner VARCHAR(255) DEFAULT NULL,
date DATETIME DEFAULT NULL,
last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (file_id),
KEY idx_title (title)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Table structure for table `groups`
--
CREATE TABLE groups (
group_id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(25) NOT NULL,
last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (group_id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Table structure for table `file_group`
--
CREATE TABLE file_group (
file_id SMALLINT UNSIGNED NOT NULL,
group_id TINYINT UNSIGNED NOT NULL,
last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (file_id, group_id),
CONSTRAINT fk_file_group_file FOREIGN KEY (file_id) REFERENCES files (file_id) ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT fk_film_group_group FOREIGN KEY (group_id) REFERENCES groups (group_id) ON DELETE RESTRICT ON UPDATE CASCADE
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
'var_dump($ _ POST);'你看到了什麼?數據是否有意義?如果您嘗試通過SQL IDE或shell運行該命令,查詢是否工作?你不顯示你實際上是如何將數據發佈到服務器的。你可以將該代碼編輯到問題中,還是編輯'var_dump'的結果到問題中? – Terminus