-1
我一直试图让这个语句更新我的分贝,但没有成功。我有一个表单允许用户更新他们的用户名和电子邮件。我忽略了什么?PDO准备好语句更新不起作用
这里是我的发言:
<?php require_once('config.php');
$id= $_SESSION['id'];//get user id you can use session also
if (isset($_POST['submit'])){
$username = $_POST['username'];
$email = $_POST['email'];
$query = "UPDATE members SET username = :username ,email = :email WHERE id = :id";
$stmt = $db->prepare($query);
$stmt->bindParam(':username',$username, PDO::PARAM_STR);
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
}
$query = "SELECT * FROM members WHERE id = $id"; //Get user info
$stmt = $db->prepare($query);
$stmt ->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($result) {
// output data of each row
foreach($result as $row){
$username = $row['username'];
$email = $row['email'];
}
}
?>
这里是我的形式:
<form role="form" class="cf-form floating-labels" method="post" action="<?php filter_input(INPUT_SERVER, 'PHP_SELF', FILTER_SANITIZE_FULL_SPECIAL_CHARS); ?>">
<fieldset>
<legend>My Account<br />
<img class="logo_contact" src="img/jobmiser_logo2.png" alt="jobmiser logo" />
</legend>
<div class="icon">
<label class="cf-label" for="username">Username</label>
<input class="user" type="text" name="username" id="username" value="<?php echo $username ?>" tabindex="2" required />
</div>
<div class="icon">
<label class="cf-label" for="email">Email</label>
<input class="email" type="email" name="email" id="email" value="<?php echo $email ?>" tabindex="3" required />
</div>
</fieldset>
<fieldset>
<div class="icon">
<input name="submit" type="submit" value="Update" />
</div>
</fieldset>
</form>
考虑加入一些代码来登录或发出错误信息,这是一个有点可疑看到您的SQL语句三个占位符,只有2'bindParam's ... – fvu
看来你'UPDATE members'查询缺少“:id”的绑定,你永远不会执行它!? – xander