1

抱歉标题难以理解,但这里什么也没有:

我的用户表上有两种用户,trainee& coach

Trainee可以添加一个coach,并且coach会看到trainee将在数据库上创建的东西。

这很简单,如果coach只能有 1 trainee,只需将trainee's 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();

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

4

3 回答 3

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 注入。

于 2013-01-24T11:48:08.593 回答
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`)
)
于 2013-01-24T11:54:27.823 回答
-2

我不知道您的数据库和体系结构,但不是更容易存储每个教练的学员列表,反过来并为每个学员分配一个教练?

如果不是,您可以存储逗号分隔值并稍后使用 PHP 解析它

编辑:但正如其他人所说,没有必要做后一件事,因为你可以有一个方便的一对多关系,所以每个教练都有一个表,每个用户都有一个表,然后例如为每个用户分配一个教练

于 2013-01-24T11:50:10.003 回答