php - 显示变量从 1 .php 到另一个 .php 时出现问题

标签 php html mysql database

因此,当我尝试仅修改数据库中的 1 个用户列数据时遇到问题。我编写的代码只会修改数据库中最后一个用户的数据,而不是当前用户的数据。

例如:我使用以下列登录 Asd 帐户:
电子邮件用户名 number prenume tara
如果我编辑它,它将在数据库中显示该值,但不会在屏幕上显示它们
如果我有更多像 asd abc abcd 这样的用户
它将显示 abcd 的值

<?php include('server.php');
$result = mysqli_query($db,"SELECT * FROM users");
while($row = mysqli_fetch_array($result))
{
   if($username=$row['username'])
   {
      $email=$row['email'];
      $user=$row['username'];
      $nume=$row['nume'];
      $prenume=$row['prenume'];
      $tara=$row['tara'];
      $oras=$row['oras'];
      $adresa=$row['adresa'];
      $numar=$row['numar'];
   }
}
?>

<form method="post" action="editprofil.php">
   <table class="table-fill">
      <thead>
         <tr>
            <th class="text-left" style="font-size:32px;padding-bottom:1em;" >Profil</th>
         </tr>
      </thead>
      <tbody>
         <tr>
            <td class="text-left">Username</td>
            <td class="text-left"><?php echo $user ?></td>
         </tr>
         <tr>
            <td class="text-left">Nume</td>
            <td class="text-left"><input type="text" name="nume"   /></td>
         </tr>
         <tr>
            <td class="text-left">Prenume</td>
            <td class="text-left"><input type="text" name="prenume"  /></td>
         </tr>
         <tr>
            <td class="text-left" >Email </td>
            <td class="text-left">  <?php echo $email; ?></td>
         </tr>
         <tr>
            <td class="text-left">Tara</td>
            <td class="text-left"><input type="text" name="tara"  /></td>
         </tr>
         <tr>
            <td class="text-left">Oras</td>
            <td class="text-left"><input type="text" name="oras"    /></td>
         </tr>
         <tr>
            <td class="text-left">Adresa</td>
            <td class="text-left"><input type="text" name="adresa"/></td>
         </tr>
         <tr>
            <td class="text-left">Telefon mobil</td>
            <td class="text-left"><input type="text" name="telefon"   /></td>
         </tr>
         <tr>
            <td class="text-left">Data nasterii</td>
            <td class="text-left"><input type="text" name="varsta"  /></td>
         </tr>
      </tbody>
   </table>
   <div class="input-container"style="padding-top:1em;">
      <input type="username" name="username" id="#{label}" />
      <label for="#{label}">Confirm username</label>
      <div class="bar"></div>
   </div>
   <div class="input-container"style="padding-top:1em;">
      <input type="password" name="password" id="#{label}" />
      <label for="#{label}">Confirm password</label>
      <div class="bar"></div>
   </div>
   <div class="button-container">
      <button type="submit" class="btn" name="edit_user">Register</button>
   </div>
</form>

服务器.php

<?php
session_start();

$username = "";
$oras ="";
$nume ="";
$prenume ="";
$tara ="";
$adresa ="";
$telefon ="";
$varsta ="";
$email="";


$errors = array();

$db = mysqli_connect('localhost', 'root', '12345678', 'registration');

if (isset($_POST['reg_user'])) {
  $username = mysqli_real_escape_string($db, $_POST['username']);
  $email = mysqli_real_escape_string($db, $_POST['email']);
  $password_1 = mysqli_real_escape_string($db, $_POST['password_1']);
  $password_2 = mysqli_real_escape_string($db, $_POST['password_2']);
  if (empty($username)) { array_push($errors, "Username is required"); }
  if (empty($email)) { array_push($errors, "email is required"); }
  if (empty($password_1)) { array_push($errors, "Password is required"); }
  if ($password_1 != $password_2) {
    array_push($errors, "The two passwords do not match");
  }

  $user_check_query = "SELECT * FROM users WHERE username='$username' OR email='$email' LIMIT 1";
  $result = mysqli_query($db, $user_check_query);
  $user = mysqli_fetch_assoc($result);

  if ($user) { // if user exists
    if ($user['username'] === $username) {
      array_push($errors, "Username already exists");
    }

    if ($user['email'] === $email) {
      array_push($errors, "email already exists");
    }
  }

  if (count($errors) == 0) {
    $password = md5($password_1);//encrypt the password before saving in the database

    $query = "INSERT INTO users (username, email, password)
              VALUES('$username', '$email', '$password')";
    mysqli_query($db, $query);
    $_SESSION['username'] = $username;
    $_SESSION['email'] = $email;
    $_SESSION['success'] = "You are now logged in";
    header('location: primapagina.php');
  }
}

if (isset($_POST['login_user'])) {
  $username = mysqli_real_escape_string($db, $_POST['username']);
  $password = mysqli_real_escape_string($db, $_POST['password']);
  if (empty($username)) {
    array_push($errors, "Username is required");
  }
  if (empty($password)) {
    array_push($errors, "Password is required");
  }

  if (count($errors) == 0) {
    $password = md5($password);
    $query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
    $results = mysqli_query($db, $query);
    if (mysqli_num_rows($results) == 1) {
      $_SESSION['username'] = $username;
      $_SESSION['email'] = $email;
      $_SESSION['success'] = "You are now logged in";
      header('location: primapagina.php');
    }else {
        array_push($errors, "Wrong username/password combination");
    }
  }
}
if (isset($_POST['edit_user']))
{
$oras = mysqli_real_escape_string($db, $_POST['oras']);
$tara = mysqli_real_escape_string($db, $_POST['tara']);
$adresa = mysqli_real_escape_string($db, $_POST['adresa']);
$nume = mysqli_real_escape_string($db, $_POST['nume']);
$prenume = mysqli_real_escape_string($db, $_POST['prenume']);
$telefon = mysqli_real_escape_string($db, $_POST['telefon']);
$varsta = mysqli_real_escape_string($db, $_POST['varsta']);
$password = md5(mysqli_real_escape_string($db, $_POST['password']));
$username = mysqli_real_escape_string($db, $_POST['username']);
$sql = "UPDATE users SET tara='$tara', oras='$oras', nume='$nume', prenume='$prenume', tara='$tara', adresa='$adresa' WHERE password = '$password' and username='$username' ";
mysqli_query($db, $sql);

}

?>

最佳答案

正如 @ AKX 所写,当您输入“$username = $row['username']”时,您将该行的用户名分配给 $username 并始终为 true,执行其中的代码如果所有时间都是您的所有记录。在这里您可以找到更多信息PHP If PHP Expressions

关于php - 显示变量从 1 .php 到另一个 .php 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54763697/

相关文章:

php - 用 PHP(和正则表达式)替换 anchor 文本

javascript - HTML 按钮的作用类似于从键盘上按下的按键,并且在特定对象或整个网站上起作用

PHP 搜索建议

php - 通过 mysqli 运行多个查询时出现语法错误

php - error_reporting(E_ALL) 不会产生错误

javascript - CSS & Javascript 效果 : arraning characters justified with different spacing between letters. Mousemove 受影响

php - 上传包含50000条记录的CSV文件并将数据插入MySQL

php - Codeigniter单站点登录

javascript - Uncaught ReferenceError : xmlhttp is not defined?

javascript - 如何使用 AngularJS 在 HTML 中创建条件