对于难以理解的标题感到抱歉,但这里什么都没有:
我的用户表中有两种用户trainee
& coach
。
Trainee
可以添加coach
,而coach
会看到trainee
将在数据库上创建的内容。
这很简单,如果coach
只能有1个trainee
,只需将trainee
的userID存储在名为iscoachof
的列上即可。但是,多个用户必须能够添加教练,因此iscoachof
可以包含比一个更多的用户ID。与34,72,345,87,97
一样。
所以,这是我当前的代码,它将使用新值更新列iscoachof
。
$fd = $_POST['coach'];
$user = $_SESSION['login']['id'];
$query = "UPDATE users SET iscoachof='$user' WHERE id='$fd'";
$add = $db->prepare($query);
if($add->execute()){
echo "Lisätty";
}
else{
echo "Ei lisätty";
}
它只是覆盖当前值,这不是一个选项。
所以,我需要做一些像
这样的事情$currentval = "SELECT iscoachof FROM users WHERE id='$fd';
$do = $db->prepare($currentval);
$do->execute();
while($row = $do->fetchObject()){
$currentval = $row->iscoachof;
}
要在更新之前获取当前值,但我应该如何存储它以便稍后在$data
$q = "SELECT * FROM diaries WHERE UserID='$data' AND date='$today'";
$do = $db->prepare($q);
$do->execute();
基本上,是否可以将它存储在一个数组中,稍后将其保存到数据库中以提取值?
答案 0 :(得分:3)
我建议您再次查看数据库设计。最好有一个独特的表来存储教练和受训者之间的关系。这样,您可以随时在表格中添加/删除。
$fd = $_POST['coach'];
$user = $_SESSION['login']['id'];
$query = "INSERT into coaches SET coach='$fd', user=$user";
$add = $db->prepare($query);
if($add->execute()){
echo "Lisätty";
}
else{
echo "Ei lisätty";
}
但要小心POST变量,否则你将接受SQL注入。
答案 1 :(得分:1)
你走了:
创建另一个表格,例如coach_to_trainee
coach_id INTEGER
trainee_id INTEGER
都是主键。
然后你可以简单地添加一对新的couch_id< - trainee_id。在这种情况下,假设一名受训者可以有多名教练,而一名教练可以分配给许多受训人员,这将是一个很多关系...
用粗体回答你的问题:是的,这是可能的。
编辑:用于创建表格的SQL:
CREATE TABLE `coach_to_trainee` (
`coach_id` INTEGER NOT NULL,
`trainee_id` INTEGER NOT NULL,
PRIMARY KEY (`coach_id`, `trainee_id`)
)
答案 2 :(得分:-2)
我不知道你的数据库和架构,但是不会更容易,而不是为每个教练存储学员名单而反过来为每个学员分配教练?
如果没有,你可以存储逗号分隔值,稍后用PHP
解析它 编辑:但正如其他人所说,没有必要做后一件事,因为你可以有一个方便的一对多关系,所以每个教练都有一个表和每个用户的表,然后为每个用户分配一个教练示例