PHP致命错误,我网站中未捕获的错误

时间:2019-02-20 10:32:38

标签: php pdo

大家好!

我对我的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
}
?>

,这里是错误 致命错误

  

致命错误:未捕获错误:调用成员函数fetch()   布尔值   C:\ Users \ schueler \ Desktop \ website \ Registrierformular \ edit.php:6堆栈   跟踪:抛出#0 {main}   C:\ Users \ schueler \ Desktop \ website \ Registrierformular \ edit.php在线   6

也谢谢大家,我是一个完全的初学者,因为我不了解javascript或其他类型的编程语言,因为我们跳过了所有内容,从MS Access过渡到了PHP,所以您可以想象它非常困难跟上!

感谢您的回答!

1 个答案:

答案 0 :(得分:2)

您的查询失败。

file_name                                       file_content
./deID.RESUL_44235345636.txt_537967875.txt      Content 3
./deID.RESUL_35234663456.txt_423452545.txt      Content 4
./deID.RESUL_34534563649.txt_345353567.txt      Content 2
./deID.RESUL_12433287659.txt_234323456.txt      Content 1

$ id是上述查询中的字符串。

正确的查询应该是:

$stmt = $pdo->query("SELECT * FROM user WHERE ID = $id");
$row = $stmt->fetch();

此外,在更新查询中,您使用的准备语句错误。

这是应该使用它们的方式。

$stmt = $pdo->prepare("SELECT * FROM user WHERE ID = ?");
$stmt->execute([$id]);
$row = $stmt->fetch();