根据特定的ID插入多个字段值

时间:2019-06-25 18:50:34

标签: php mysql database forms insert

我有一个老师的时间表。该老师有自己的课程,她应该可以从小时开始在数据库中输入他的课程主题。

我试图弄清楚这是怎么可能的。

这是我的问题(代码):我的老师在html中查看具有不同名称的字段

<td><input type="text" name="classContent_{{ item.content }}"></td>

应该是

classContent_0
classContent_1
classContent_2
classContent_3

所以每个主题(小时)我都有不同的字段名称

现在我正在获取时间表数据并按日期进行分组(以便稍后老师可以选择特定的日期并获取数据)

$timetable = $administration->timetableDataByUsername($username);

        foreach ($timetable as $item)  {
            foreach ($item as $key => $value) {
                $timetableGroupedByDate[$item['date']][$key] = $value;
            }
        }

        var_dump($timetableGroupedByDate);

这是var dump

'2019-05-02' => 
    array (size=9)
      'profile_id' => string '2' (length=1)
      'untericht_id' => string '3' (length=1)
      'stundenplan_id' => string '3' (length=1)
      'inhalt' => null
      'zeit' => string '12:25' (length=5)
      'date' => string '2019-05-02' (length=10)
      'raum_nr' => string '10' (length=2)
      'typ' => string 'schlagzeug' (length=10)
      'content' => int 2
  '2019-06-02' => 
    array (size=9)
      'profile_id' => string '2' (length=1)
      'untericht_id' => string '5' (length=1)
      'stundenplan_id' => string '5' (length=1)
      'inhalt' => null 
      'zeit' => string '16:05' (length=5)
      'date' => string '2019-06-02' (length=10)
      'raum_nr' => string '5' (length=1)
      'typ' => string 'trombone' (length=8)
      'content' => int 4
  '2019-06-03' => 
    array (size=9)
      'profile_id' => string '2' (length=1)
      'untericht_id' => string '6' (length=1)
      'stundenplan_id' => string '6' (length=1)
      'inhalt' => null
      'zeit' => string '16:45' (length=5)
      'date' => string '2019-06-03' (length=10)
      'raum_nr' => string '10' (length=2)
      'typ' => string 'generell' (length=8)
      'content' => int 5

基本上我想添加

  

吸气

特定字段,现在它仅添加到表格的底部。

这是主要问题:我的插入语句

    public function addContent($content) {
        $stmt = $this->pdo->prepare("
                                        INSERT INTO untericht (inhalt)
                                        VALUE (?)
        ");

        $stmt->execute([$content]);
      }

这就是我在控制器中的称呼方式:

        if (isset($_POST['submitContent'])) {
            $administration->addContent(
                    $_POST['classContent_0']
            );
}

基本上,当我向第一个字段添加内容时,它会添加到数据库中,但会作为新行。但是,应该为例如

的第一个数组添加它
  

吸气

为空

我该如何最好地解决呢?

编辑:

这是一张图片,因此更有意义。

enter image description here

1 个答案:

答案 0 :(得分:1)

您要UPDATE数据库行。这是一个示例方法:

public function updateContent($rowId, $content) {
    $statement = $this->pdo->prepare("UPDATE untericht
                                      SET inhalt = ?
                                      WHERE id = ?");

    $statement ->execute([$content, $rowId]);
}

注意如何唯一地标识要更新的行。我已经用$rowId完成了。我不确定您的数据库表中是否有这样的列,但是在大多数情况下,使用a unique auto-incrementing value列是很有用的。

检查inhalt为空的行不是一个好主意,因为这意味着您不确定要更改哪一行。