sql/php/session update userprofile



我知道已经有很多关于这个话题的问题了。但遗憾的是,当我输入不同的输入并按下更新按钮时,我的用户配置文件只是不想更新。我需要在周三之前完成这个学校练习,我真的没有其他人可以问。希望你们能帮助我。 我的问题: 我将始终获得输出update not successful并且它永远不会更新数据库中的任何记录。而且我不确定该怎么做,因为我几乎尝试了一切。

欢迎光临.php:

<?php
include("../php/session.php");
?>

<div>
<div class="col-md-9">
<div class="imagepageback">
<div class="card">
<div class="profilimage"></div>
<hr class="verticalline">                   
<form class="form" action="" method="post">
<input id="username" class="username" type="text" name="username" value="<?php echo $username; ?>" readonly>
<input id="email" class="email" type="text" name="email" value="<?php echo $email; ?>" readonly>
<input id="firstname" class="firstname" type="text" name="firstname" value="<?php echo $firstname; ?>" readonly>
<input id="lastname" class="lastname" type="text" name="lastname" value="<?php echo $lastname; ?>" readonly>
<input id="birthdate" class="birthdate" type="text" name="birthdate" value="<?php echo $birthdate; ?>" readonly>
<div>
<input id="street" class="street" type="text" name="street" value="<?php echo $street; ?>" readonly>
<input id="nr" class="nr" type="text" name="streetnr" value="<?php echo $streetnr; ?>" readonly>
</div>
<div>
<input id="city" class="city" type="text" name="city" value="<?php echo $city; ?>" readonly>
<input id="plzz" class="plzz" type="text" name="plzz" value="<?php echo $plzz; ?>" readonly>
</div>
<a href="#" class="editprofilelink" id="editprofilelink"  onclick="editable(); showbt()"; >Edit Profile</a>
<a href="changepd.html" class="editpasswordlink">Change Password</a>
<!----------PHP Skript----------->
<?php 
if($_SERVER["REQUEST_METHOD"] == "POST") {
$email = mysqli_real_escape_string($db,$_POST['email']);
$username = mysqli_real_escape_string($db,$_POST['username']);
$firstname = mysqli_real_escape_string($db,$_POST['firstname']);
$lastname = mysqli_real_escape_string($db,$_POST['lastname']);
$birthdate = mysqli_real_escape_string($db,$_POST['birthdate']);
$street = mysqli_real_escape_string($db,$_POST['street']);
$streetnr = mysqli_real_escape_string($db,$_POST['streetnr']);
$city = mysqli_real_escape_string($db,$_POST['city']);
$plzz = mysqli_real_escape_string($db,$_POST['plzz']);

$sql = "UPDATE clients SET " .
"email = '$email', " .
"username = '$username', " .
"firstname = '$firstname', " . 
"lastname = '$lastname', " .
"birthdate = '$birthdate', " .
"street = '$street', " .
"streetnr = '$streetnr', " .
"city = '$city', " .
"plzz = '$plzz' " .
"WHERE username = '$username'";
$result = mysqli_query($db,$sql);
if($result) {
$_POST["email"] = $email;
$_POST["username"] = $username;
$_POST["firstname"] = $firstname;
$_POST["lastname"] = $lastname;
$_POST["birthdate"] = $birthdate;
$_POST["street"] = $street;
$_POST["streetnr"] = $streetnr;
$_POST["city"] = $city;
$_POST["plzz"] = $plzz;
header("location:http://localhost:81/Left_over_youth_website/php/logout.php");
}else {
echo '<p id="error">Update was not sucessful</p>';
}
}
?>  
<input hidden id="btupdate" type="submit" name="btupdate" value="Update">   
</form>
</div>
</div>
</div>
</div>

会话.php:

<?php
include('connection.php');
session_start();
$user_check = $_SESSION['login_user'];
if(!isset($_SESSION['login_user'])){
header("location:http://localhost:81/Left_over_youth_website/pages/login.php");
}
?>

连接.php:

<?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_DATABASE', 'leftoveryouth');  
$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
?>

数据库:

CREATE TABLE `clients` (
`id` int(11) NOT NULL,
`firstname` varchar(50) DEFAULT NULL,
`lastname` varchar(50) DEFAULT NULL,
`birthdate` date DEFAULT NULL,
`street` varchar(50) DEFAULT NULL,
`streetnr` varchar(50) DEFAULT NULL,
`city` varchar(50) DEFAULT NULL,
`plzz` varchar(50) DEFAULT NULL,
`username` varchar(50) DEFAULT NULL,
`email` varchar(50) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

代码中有几个变量名错误。例如,一个input名为streett但在读取$_SESSION[]时,它试图读作street

$_SESSION[]无法读取开机自检数据。您需要改用$_POST[]

根据您提供的 CREATE 语句,SQL 查询中的列名是错误的。此外,在查询的最后一部分,您没有包含变量$plzz$,根据您的代码,该变量也拼写错误。

当事情不正常时,请始终检查变量的拼写和大小写错误。

此外,在 SQL 中,执行更新的正确格式是

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

正如@Karlo在评论中提到的,删除and关键字并逗号分隔您正在执行的更新。

最后,必须使用WHERE语句来限制要更新的行。否则,您将更新数据库中的所有行。

旧查询:(我创建了多行,以便更容易看到更改)

$sql = "UPDATE clients SET " .
"emaill = '$email' and " .
"usernamee = '$username' and " .
"firstnamee = '$firstname' and " .
"lastnamee = '$lastname' and " .
"birthdatee = '$birthdate' and " .
"street = '$street' and " .
"nrr = '$streetnr' and " .
"city = '$city' and " .
"plzz = 'plz'";

基于提供的列的新查询:

$sql = "UPDATE clients SET " .
"email = '$email', " .
"username = '$username', " .
"firstname = '$firstname', " . 
"lastname = '$lastname', " .
"birthdate = '$birthdate', " .
"street = '$street', " .
"streetnr = '$streetnr', " .
"city = '$city', " .
"plzz = '$plzz' " .
"WHERE username = '$username'";

在服务器端,使用后全局数组(如

$name = $_POST['name'];

然后 sql

$sql = "UPDATE profile SET name = '".$name.'" WHERE userid = '".$_SESSION['userid].'"; 
$update = $connection->query($sql);
if($update){
$_SESSION['name']=$name;
}

这是如果您更新登录人的当前信息,假设您保留他们的 ID 或其他唯一标识他们的东西

最新更新