我需要更新数据库,问题是:无法加载我想要更新的“id”或用户。如果我根据“id”选择用户,则应用程序不知道找到该用户,没有用户。我不知道要纠正这个问题。谢谢你的帮助。 PHP代码:
<?php
$id_user=$_GET['id'];
$server_name="localhost";
$db_user_name="root";
$password="root";
$db_name="prva";
$connection=mysqli_connect($server_name, $db_user_name,$password,$db_name);
if($connection) {
echo 'Connected';}
if($_SERVER['REQUEST_METHOD'] == 'GET' && $_GET['edit_user_form']){
$user_name = $_GET['user_name'];
$user_surname = $_GET['user_surname'];
if(preg_match('#^.{0,50}$#', $user_name) &&
preg_match('#^.{1,50}$#', $user_surname)){
$sql_query = "UPDATE users SET user_name=";
if($user_name){
$sql_query .= "'".$user_name."',";
}else{
$sql_query .= "NULL,";
}
$sql_query .= "user_surname='".$user_surname."'";
$sql_query .= " WHERE id=".$id_user.";";
$result = mysqli_query($connection, $sql_query);
if ($result) {
echo '<p class="success">Updated</p>';
}else{
echo '<p class="error">Error</p>';
}
// echo "Error: " . $sql_query . "<br>" . mysqli_error($connection);
}else{
echo '<p class="error">Wrong data </p>';
}
}
if($id_user){
$sql_query = "SELECT * FROM users WHERE id=".$id_user.";";
$result = mysqli_query($connection, $sql_query);
if (mysqli_num_rows($result) > 0) {
$data = mysqli_fetch_assoc($result);
$user_name = $data[0]['user_name'];
$user_surname = $data[0]['user_surname'];?>
表单看起来:
<form class="contact_form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="get">
<label for="user_name">Name</label>
<input type="text" name="user_name" id="user_name" value="<?php echo $user_name;?>">
<label for="user_surname">Surname</label>
<input type="text" name="user_surname" id="user_surname" value="<?php echo $user_surname;?>">
<input type="submit" name="edit_user_form" value="Update">
<input type="hidden" name="id_user" value="<?php echo $id_user;?>">
</form>
PHP代码(其余):
<?php
}else{
echo '<p class="error">Data for editing are not loaded .</p>';
}
}else{
echo '<p class="error">Parameter of user is not loaded .</p>';
}?>
答案 0 :(得分:0)
检查HTML中隐藏字段的值,需要使用用户ID填充:
<input type="hidden" name="id" value="<?php echo $id_user;?>">
答案 1 :(得分:0)
您从$_GET
获取了错误的参数。
您输入的name属性为id_user
,但您的id
。
改为:
$id_user = $_GET['id_user'];
您还应该使用mysqli_real_escape_string来清理您的输入:
$id_user = mysqli_real_escape_string($connection, $_GET['id_user']);