大家好!
我的PHP网站有问题。
所以基本上它是一个用户可以登录的网站,他们需要填写姓名,姓氏,他们居住的地方和电子邮件。
然后数据将保存在MyAdmin数据库中,我创建了显示所有用户的网站,因此当您单击按钮时,将显示所有用户。 我们还制作了一个随机更新站点。 最后,我们需要建立另一个更新站点,您可以根据需要更新每个用户的数据。
这是一个学校项目,我已经问过我的老师,但他每次都生气,所以我很生气,我不想问这个家伙。好的,我将在这里复制代码:
<?php
if (!isset($_POST["update"])) {
$pdo = new PDO('mysql:host=localhost;dbname=user', 'root', '');
$id = isset($_GET['id']) ? $_GET['id'] : '';
$stmt = $pdo->query("SELECT * FROM user WHERE ID = $id");
$row = $stmt->fetch();
}
if (isset($_POST["update"])) {
$pdo = new PDO('mysql:host=localhost;dbname=user', 'root', '');
if (!isset($name)) {
$id = $_POST['ID'];
$Vorname = $_POST['Vorname'];
$Nachname = $_POST['Nachname'];
$Postleitzahl = $_POST['Postleitzahl'];
$Email = $_POST['Email'];
$Menge = $_POST['Menge'];
$Ratenzahlung = $_POST['Ratenzahlung'];
}
$stmt = $pdo->prepare($sql = "UPDATE user SET Vorname = '$Vorname', Nachname = '$Nachname', Postleitzahl = '$Postleitzahl', Email = '$Email', Menge = '$Menge', Ratenzahlung = '$Ratenzahlung', WHERE ID = $id");
$stmt = $pdo->prepare($sql);
$stmt->execute();
echo "Aktualisieren erfolgreich.";
require_once("showv2.php");
}
if (!isset($Vorname)) {
?>
<!DOCTYPE html>
<html>
<head>
<title> Bookmark Update </title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<form action="edit.php" method="post">
<input type="hidden" name="ID" value=<?php echo $row["ID"]; ?>>
<input type="text" name="Vorname" style="width:50px" value=<?php echo $row["Vorname"]; ?>>
<input type="text" name="Nachname" value=<?php echo $row["Nachname"]; ?>>
<input type="number" name="Postleitzahl" value=<?php echo $row["Postleitzahl"]; ?>>
<input type="text" name="Email" style="width:50px" value=<?php echo $row["Email"]; ?>>
<input type="number" name="Menge" style="width:50px" value=<?php echo $row["Menge"]; ?>>
<input type="text" name="Ratenzahlung" style="width:50px" value=<?php echo $row["Ratenzahlung"]; ?>>
<input type="submit" name="update" value="Update Data">
</form>
</body>
</html>
<?php
}
?>
这里是Error Fatal错误
致命错误:未捕获错误:在C:\ Users \ schueler \ Desktop \ website \ Registrierformular \ edit.php中调用boolean上的成员函数fetch():6堆栈跟踪:#0 {main}抛出C:\ Users \第6行的schueler \ Desktop \ website \ Registrierformular \ edit.php
谢谢你们,也请注意,我是一个完全初学者,因为我不知道javascript或其他类型的编程语言,因为我们之间跳过了从MS Access跳到PHP,所以你可以想象它很难跟上!
感谢您的回答!
您的查询失败。
$stmt = $pdo->query("SELECT * FROM user WHERE ID = $id");
$row = $stmt->fetch();
$ id是上述查询中的字符串。
正确的查询应该是:
$stmt = $pdo->prepare("SELECT * FROM user WHERE ID = ?");
$stmt->execute([$id]);
$row = $stmt->fetch();
此外,在您的更新查询中,您使用的预准备语句是错误的。
这就是你应该如何使用它们。
<?php
if (isset($_POST["update"])) {
$pdo = new PDO('mysql:host=localhost;dbname=user', 'root', '');
if (!isset($name)) {
$id = $_POST['ID'];
$Vorname = $_POST['Vorname'];
$Nachname = $_POST['Nachname'];
$Postleitzahl = $_POST['Postleitzahl'];
$Email = $_POST['Email'];
$Menge = $_POST['Menge'];
$Ratenzahlung = $_POST['Ratenzahlung'];
}
$stmt = $pdo->prepare("UPDATE user SET Vorname = ?, Nachname = ?, Postleitzahl = ?, Email = ?, Menge = ?, Ratenzahlung = ? WHERE ID = ?");
$stmt->execute([$Vorname,$Nachname,$Postleitzahl,$Email,$Menge,$Ratenzahlung,$id]);
echo "Aktualisieren erfolgreich.";
require_once("showv2.php");
}