обновить или вставить информацию для каждого пользователя в MySQL - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь вставить каждое имя пользователя в базу данных MySQL, если пользователя нет в определенной таблице.В противном случае просто обновите определенное значение, если пользователь уже существует (увеличьте счетчик на +1).

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

Сессия:
$userName = $_SESSION['name'];

Запрос для отображения друзей :

$query = "SELECT * FROM
  users u
  JOIN connections con on u.userName = con.Friend
  WHERE u.userName = '$userName'
  AND con.connectionStatus = '1'
  UNION
  SELECT * FROM
  users u
  JOIN connections con on u.userName = con.FriendReferee
  WHERE u.userName = '$userName'
  AND con.connectionStatus = '1'";

Извлечениедрузья из таблицы соединений:

$result = $conn->query($query);
if ($result->num_rows > 0) {
  while($row = $result->fetch_assoc()) {
   $friends = $row["Friend"];
   $friendRef = $row["FriendReferee"];
  if ($userName == $friends) {
  $userName = $friendRef;
  } elseif ($userName == $friendRef) {
    $userName = $friends;
  }
 }
}

Вставить или обновить пользователя со значением в другую таблицу:

 $result = $conn->query("SELECT id, userTo, counter FROM notbell WHERE userTo = '$userName'");
if($result->num_rows == 0 ) {
  $sql2 = "INSERT INTO notbell (id, userTo, counter)
  VALUES ('', '$userName', '1')";
} else {
 mysqli_query($conn, "UPDATE notbell
                     SET counter = counter + 1
                     WHERE userTo = '$userName'");
}

Выполнить запрос:

if ( $conn->query($sql2) === TRUE) {
  $prevUrl = $_SERVER['HTTP_REFERER'];
  header('Location: '.$prevUrl);
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

Я предполагаю, что я имею отношение к foreach, но не уверен, как мне это сделать.

Ответы [ 3 ]

0 голосов
/ 03 апреля 2019

Вы можете сделать имя столбца userTo уникальным из базы данных, а затем, пожалуйста, onDuplicate функцию mysqli

INSERT INTO notbell (id, userTo, counter) VALUES (', '$userName', '1')
  ON DUPLICATE KEY UPDATE counter=counter+1;
0 голосов
/ 03 апреля 2019

Вам необходимо выполнить запрос: $ sql2 = "INSERT INTO notbell (id, userTo, counter) VALUES ('', '$ userName', '1')"; $ result = $ conn-> query ($ sql2);

0 голосов
/ 03 апреля 2019

Вы не добавили mysqli_query() для выполнения INSERT запроса в if блоке:

$sql2 = "INSERT INTO notbell (id, userTo, counter)
  VALUES ('', '$userName', '1')";
mysqli_query($conn, $sql2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...