Задать вопрос
@Zina-2000

При попытке изменить логин пользователя, меняются логины у всех пользователей в базе данных. Как исправить?

Здравствуйте! Делаю форму редактирования личного кабинета для пользователя сайта. При попытке изменить логин пользователя, меняются логины у всех пользователей в базе данных. Понимаю, что ошибка находится в условии "WHERE id = id", но как исправить, чтобы все работало корректно я не знаю.

<?php
require("../db.php");
?>
<? session_start() ?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Login</title>
  <link rel="stylesheet" href="style.css">
  <link rel="stylesheet" href="reset.css">
</head>
<body>

<div class="container">
  <?php
  $GLOBALS['link'] = mysqli_connect("localhost", "root", "", "lesko") or die ("Нет соединения");
  mysqli_set_charset($link, 'utf8');
  ?>
<?
    var_dump ($_SESSION['login']);
  $query = "UPDATE users SET login='$_POST[new_login]' WHERE id= id";

  if (!mysqli_query($GLOBALS['link'], $query))
    echo "ошибка $query<br/>" .
    mysqli_error($GLOBALS['link'])."<br /><br />";
    $result = mysqli_query($GLOBALS['link'], $query);
  ?>

</div>

Профиль пользователя<br>
ваш логин : <?=$_SESSION['login']->login;?> <br>

    <?
  if (isset($_POST['change_login'])) {
    $error = array();
    if ($_POST['new_login'] == '') {
      $error[] = 'Введите новый логин' ;
    }
    if ($_POST['new_login'] == $_SESSION['login']->login) {
      $error[] = 'Введите новый логин' ;
    }
    if (empty($error)) {

      $query = "UPDATE users SET login ='$_POST[new_login]' WHERE id = id";
      if (!mysqli_query($GLOBALS['link'], $query))
      $result = mysqli_query($GLOBALS['link'], $query);
      echo 'логин изменен на '.$_POST['new_login'].'';
    }else {
      echo array_shift($error);
    }

  }
    ?>

    <form action="" method="POST">
      <input type="text" name="new_login" class="form-control" style="width:auto;px;">
      <button type="submit" name="change_login" class="btn btn-warning"> Изменить логин </button>
    </form>

<br>
Логин: <?=$_SESSION['login']->login;?> <br>
Пароль: <?=$_SESSION['login']->password;?> <br>
<a href="/logoout" class="btn btn-danger">Выйти из аккаунта</a>

</body>
</html>
  • Вопрос задан
  • 138 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
dyuriev
@dyuriev
A posteriori
WHERE id= id
косяк туть
выражение заведомо всегда истинно для всех строк в таблице.

хотя в целом код сам по себе какой то большой косяк.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽