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

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

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

Похожие вопросы