【问题标题】:Get user id for database update - PHP/MySQL获取数据库更新的用户 ID - PHP/MySQL
【发布时间】: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 是什么?

标签: php html mysql database


【解决方案1】:

这只是示例,因为我不知道您的 html 标记或它的创建。

在表单中添加一个隐藏的输入字段:

<input type="hidden" name="userId" value="<?php echo $userId; ?>">

并且在您的 php 代码中,您可以在表单提交后访问 userId 不要忘记转义您的数据!

$userId = $_POST['userId'];

【讨论】:

  • 不要忘记过滤传入的帖子/获取。
  • mysqli_real_escape_string int?
  • @TobiasKun 不是 那个 人,但我认为你的意思是 exemplaryexample i>.
  • 明白了.. 永远不要头脑。但是我听说过 OP(原帖)
  • 这个答案很好,但只有当 OP 的其他文件正确地从他们的表中提取数据时才有效。但是,该 POST 应该是 GET。但是您有$userIdecho $user_id;,它们将失败或可能失败。最好保持一致。 OP 对我的问题不清楚。
【解决方案2】:

我发现您的 SQL 语句中有一个错误,请尝试更改这一行:

$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'");

进入这个:

$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."'");

您应该在 WHERE 部分看到这两者之间的区别。

【讨论】:

  • 谢谢!尝试了您的代码,但仍然是同样的问题。我收到消息“无法更新数据:”并且数据库内部没有任何变化。
  • 相同的区别。 '$var' = '".$var."' - 不是我的反对票。
  • Christoph 你能告诉我们你在“无法更新数据:”之后得到了什么吗?
  • 好吧,我很想向您展示,但什么都没有。 mysqli_error($connect) 什么也没显示。知道为什么吗?顺便说一句,我也没有对你投反对票。我感谢每一个帮助
  • 尝试一步一步来。如果您是 PHP 新手,这对您有好处。创建一个新文件,然后在连接到您的数据库中检查它是否正在工作,如果它尝试从数据库中简单删除特定记录但在您的代码中硬编码 id,下一步将是从 $_GET 获取 id 等等。 .
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-22
  • 2014-01-04
  • 1970-01-01
  • 2014-01-15
  • 2017-12-27
相关资源
最近更新 更多