很抱歉标题很难理解,但这里什么都没有:
我的用户表上有两种用户,trainee&coach
Trainee可以添加一个coach,并且coach将看到trainee将在数据库上创建的内容。
这很简单,如果coach只能有1trainee,那么只需将trainee的用户id存储在一个名为iscoachof的列中。但是,多个用户必须能够添加coach,因此iscoachof可以包含比一个用户id多得多的用户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();

所以,基本上,可以将它存储在一个数组中,在以后提取值时保存到数据库中吗?

最佳答案

干得好:
创建另一个表,例如coach_to_trainee

coach_id INTEGER
trainee_id INTEGER

两者都是主键。
然后,您可以简单地添加一对新的couch-id用粗体字回答你的问题:是的,这是可能的。
编辑:创建表的SQL:
CREATE TABLE `coach_to_trainee` (
  `coach_id` INTEGER NOT NULL,
  `trainee_id` INTEGER NOT NULL,
  PRIMARY KEY (`coach_id`, `trainee_id`)
)

08-19 00:40