@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>
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
dyuriev
@dyuriev
A posteriori
WHERE id= id
косяк туть
выражение заведомо всегда истинно для всех строк в таблице.

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 12:23
2500 руб./за проект
25 апр. 2024, в 12:21
10000 руб./за проект