Как обновить таблицу базы данных, оставив два поля пустыми / не заполненными / пустыми - PullRequest
0 голосов
/ 22 января 2019

В блоге, который я пишу, я хочу, чтобы администраторы могли редактировать комментарии. Это прекрасно работает, но есть проблема с написанием нового комментария из-за двух полей в таблице, которые должны быть пустыми.

Db-таблица comments создается следующим образом:

comments(id, content, post_id, comment_author, date, editedBy, editedAt)

Когда пишется новый комментарий, поля editedBy и editedAt должны быть пустыми / просто не заполненными / нулевыми, поскольку они явно не обновлялись.

Я не могу просто оставить поля пустыми, могу ли я вставить в них пустую строку или пометить их как NULL?

public function insertForPost($content, $post_id, $comment_author, $date, $editedBy, $editedAt)
{
  $table = $this->getTableName();

  $stmt = $this->pdo->prepare(
    "INSERT INTO `{$table}`(`content`, `post_id`, `comment_author`, `date`,
    `editedBy`, `editedAt`) VALUES (:content, :post_id, :comment_author, :date,
    :editedBy, :editedAt)"
  );

  $stmt->execute([
    'content' => $content,
    'post_id' => $post_id,
    'comment_author' => $comment_author,
    'date' => $date,
    'editedBy' => $editedBy,
    'editedAt' => $editedAt
  ]);
}

Все параметры содержат правильные данные, я просто не знаю, что делать с editedBy и editedAt.

Когда комментарий редактируется (что работает просто отлично) editedBy будет заполнено именем пользователя, редактирующего комментарий, и editedAt будет заполнено датой редактирования комментария, поэтому оба являются строками .

Я хочу знать, нужно ли мне поместить пустую строку в эти два поля или установить их null и как это сделать.

Ответы [ 2 ]

0 голосов
/ 22 января 2019

В базе данных:

alter table alter <column_name> set default <default_value>; 

при условии, что вы находитесь на mysql / mariadb, поэтому для каждого нового комментария у вас есть поля со значением по умолчанию.

Этот код обновит данные ужев БД с новым значением.

update <table_name> set <column_name> = <default_value> where <column_name> is null

просто вставьте нужное имя столбца

0 голосов
/ 22 января 2019

Пока editedAt и editedBy имеют значение NULL (поэтому столбцы не включают в себя оператор NOT NULL во время создания таблицы), вы можете оставить их из набора столбцов между именем таблицы иVALUES предложение с оператором вставки или обновления.Следовательно, запрос приводит к:

INSERT INTO `{$table}`(`content`, `post_id`, `comment_author`, `date`) VALUES (:content, :post_id, :comment_author, :date);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...