Как исправить дублирующееся имя тега в php и mysqli - PullRequest
0 голосов
/ 03 марта 2019

Я не знаю, как это объяснить, может быть, это понятно.У меня есть 2 таблицы:

  1. Теги таблицы: (tagID: '1', '2', '3') (tagName: 'a', 'b', 'b')
  2. Таблица tag_posts: (postID: '1', '1', '2') (tagID: '1', '2', '3')

Вывод: Запись 1 с тегом (a [id = 1], b [id = 2]) и запись 2 с тегом (b [id = 3])

Но я хочу результатакак это:

  1. Теги таблицы: (tagID: '1', '2') (TagName: 'a', 'b')

  2. Таблица tag_posts: (postID: «1», «1», «2») (tagID: «1», «2», «2»)

Вывод: Запись 1 с тегом (a [id = 1], b [id = 2]) и запись 2 с тегом (b [id = 2])

Я хочу включитьтаблица «тегов» имени тега, b = 2;не b = 2 и b = 3 (не двойное имя тега)

Php

$last_post_id = mysqli_insert_id($connect);

foreach($tags as $tag){
  $sql = mysqli_query($connect, "SELECT * FROM tb_tags WHERE tagName = '$tag'") or die(mysqli_error());
  $row = mysqli_fetch_array($sql);
  if($row == NULL){
    mysqli_query($connect, "INSERT INTO tb_tags (tagName) VALUES ('$tag')") or die(mysqli_error());
    $last_tag_id = mysqli_insert_id($connect);
    mysqli_query($connect, "INSERT INTO tb_tag_posts (postID, tagID) VALUES ('$last_post_id', '$last_tag_id')") or die(mysqli_error());
  }else{
  // if tags name exists do nothing and take the existing id tag
    mysqli_query($connect, "INSERT INTO tb_tag_posts (postID, tagID) VALUES ('$last_post_id', '".$row['tagID']."')") or die(mysqli_error());
  }
}

1 Ответ

0 голосов
/ 04 марта 2019

mysqli_fetch_array: Returns an array that corresponds to the fetched row or NULL if there are no more rows for the resultset represented by the result parameter. из http://php.net/manual/en/mysqli-result.fetch-array.php

Я думаю, что вам нужен код, подобный следующему: if($row == null){

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