【发布时间】:2023-03-29 01:33:01
【问题描述】:
有一件事我不明白。我有一个 php 表单来更新我的数据库条目。问题是,我不知道该怎么做,只会更新一个特定的 ID。让我解释一下我的问题:
我有一张有用户的桌子。当我单击编辑用户时,我将被重定向到 edit.php?id=3(例如,如果我想编辑 ID 为 3 的用户)。现在在编辑页面上我进行更改并单击更新按钮。如果我这样做,我的数据库中的所有条目都会更新。在我看来,问题是我必须在查询中输入类似“WHERE id = '$user_id'”的内容,但我对 PHP 很陌生,所以我不知道变量 $user_id 应该是什么样子才能正常工作.
如果我不输入 WHERE 语句,那么所有条目都会被更新。如果我输入 WHERE id = '$user_id' ,则不会更新任何条目。让我给你看我的代码:
<?php
session_start();
// Create connection credentials
$db_host = 'localhost';
$db_name = 'DBNAME';
$db_user = 'DBUSER';
$db_pass = 'DBPASS';
// Create mysqli object
$connect = new mysqli ($db_host, $db_user, $db_pass, $db_name);
// Error Handler
if ($connect->connect_error) {
printf ("Connection failed: %s\n", $connect->connect_error);
exit();
}
// Check if form is submitted
if (isset ($_POST['updatelehrer'])) {
$user_id = $_POST['user_id']; //Updated due to a comment
$update_firstname_teacher = mysqli_real_escape_string ($connect, $_POST['lehrer_vorname'] );
$update_lastname_teacher = mysqli_real_escape_string ($connect, $_POST['lehrer_nachname'] );
$update_street_teacher = mysqli_real_escape_string ($connect, $_POST['lehrer_strasse'] );
$update_plz_teacher = mysqli_real_escape_string ($connect, $_POST['lehrer_plz'] );
$update_city_teacher = mysqli_real_escape_string ($connect, $_POST['lehrer_ort'] );
$update_phonenumber_teacher = mysqli_real_escape_string ($connect, $_POST['lehrer_telefon'] );
$update_bank_teacher = mysqli_real_escape_string ($connect, $_POST['lehrer_bank'] );
$update_inhaber_teacher = mysqli_real_escape_string ($connect, $_POST['lehrer_inhaber'] );
$update_iban_teacher = mysqli_real_escape_string ($connect, $_POST['lehrer_iban'] );
$update_bic_teacher = mysqli_real_escape_string ($connect, $_POST['lehrer_bic'] );
}
$sql = mysqli_query ($connect, "UPDATE `teacher` SET
firstname='".$update_firstname_teacher."', lastname='".$update_lastname_teacher."', street='".$update_street_teacher."', plz='".$update_plz_teacher."', city='".$update_city_teacher."', phonenumber='".$update_phonenumber_teacher."', bankaccount='".$update_bank_teacher."', bankowner='".$update_inhaber_teacher."', iban='".$update_iban_teacher."', bic='".$update_bic_teacher."' WHERE id = '$user_id'");
if (mysqli_affected_rows($connect) == 0) //<--
{
die('Could not update data: ' . mysqli_error($connect));
} else {
header("Location: admin.php");// send to profile overview page
exit;
}
mysqli_close($connect);
?>
谁能告诉我我能做些什么,以便只有具有特定 ID 的特定用户才会被更新?非常感谢大家的帮助。
编辑: 我更新了上面的代码并插入了 $_POST['user_id']。这是我的表格的一部分:
<form method="POST" action="update_profile_teacher.php" class="form-horizontal form-label-left">
<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12">ID (versteckt):</label>
<div class="col-md-9 col-sm-9 col-xs-12">
<input type="hidden" name="user_id" class="form-control" value="<?php echo $_SESSION['data']['id']; ?>">
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12">Passwort:</label>
<div class="col-md-9 col-sm-9 col-xs-12">
<input type="password" name="lehrer_passwort" class="form-control" value="passwordonetwo">
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12">E-Mail:</label>
<div class="col-md-9 col-sm-9 col-xs-12">
<input type="email" class="form-control" name="lehrer_email" value="<?php echo $_SESSION['data']['email']; ?>" placeholder="E-Mail Adresse">
</div>
</div>
</form>
编辑 2: 这是关于如何在我的编辑页面上获取 $user_id 的代码
<?php
$user_id = $_GET['id'];
$get_user = "SELECT * FROM teacher WHERE id = '$user_id'";
$result_get_user = mysqli_query($connect, $get_user);
$_SESSION['data'] = mysqli_fetch_assoc($result_get_user);
?>
【问题讨论】:
-
您好。我注意到你问了很多关于 php 的问题。在来这里之前,您有没有花时间自己进行研究和错误修复?
-
“我试过 $user_id = $_GET['id']; 但那根本不起作用。” - 这对我们没有帮助。您需要向我们展示您使用的方法。如果来自查询或href,则填充某些内容的位置。编辑:好的,看到了。好吧,有些事情失败了。
-
嘿!是的,我做到了。过去几周我读了很多书,几天前我开始了我的第一个测试项目。我的大多数问题都是具体的,我找不到任何与我的问题相关的文献。我非常感谢在这里获得的所有帮助,因为这对我了解我的问题并为我的具体问题找到解决方案有很大帮助。
-
您还混合了 MySQL 函数
mysql_close($connect);- 请记住这一点,以及您可能编写的未来脚本或问题。在您的代码中任何涉及mysqli_的地方都不应该有mysql_的任何实例。 -
从故障排除/调试开始。首先,调用这个 PHP 脚本时你当前的 URL 是什么?