请检查更新后的代码,但请告诉我您在哪里定义了 $id 变量,因为它是我们更新值的基础变量。
我做了什么?
我已经使用占位符值更新了您的更新查询,并且还使用 isset() 函数来检查我们的 $_POST 值。
<?php
$fname_upd = isset($_POST['fname']) ? $_POST['fname'] : '';
$lname_upd = isset($_POST['lname']) ? $_POST['lname'] : "";
$email_upd = isset($_POST['email']) ? $_POST['email'] : "";
include('connection.php');
$sql = "UPDATE myguests SET firstname = :firstname, lastname = :lastname, email = :email WHERE id = :id";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':firstname', $fname_upd, PDO::PARAM_STR);
$stmt->bindParam(':lastname', $lname_upd, PDO::PARAM_STR);
$stmt->bindParam(':email', $email_upd, PDO::PARAM_STR);
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
而且您还需要更新您使用的语法,因为它没有正确使用,我已更新为
<?php
$fname_upd = isset($_POST['fname']) ? $_POST['fname'] : '';
$lname_upd = isset($_POST['lname']) ? $_POST['lname'] : "";
$email_upd = isset($_POST['email']) ? $_POST['email'] : "";
include('connection.php');
$q_ins = "UPDATE myguests SET firstname=?, lastname=?,email=? WHERE id=?";
$ins = $dbh->prepare($q_ins);
$res = $ins->execute(array($fname_upd, $lname_upd, $email_upd, $id));
print_r($res);