Php PDO更新用户信息查询
又是我:) 我的项目快完成了,只剩下一件事了。 我无法使用pdo更新数据库中的值。 这是我的剧本Php PDO更新用户信息查询,php,pdo,session-variables,Php,Pdo,Session Variables,又是我:) 我的项目快完成了,只剩下一件事了。 我无法使用pdo更新数据库中的值。 这是我的剧本 <a href="?UpdateUser=' .$ID. '" class="btn btn-sm btn-icon btn-pure btn-default on-default edit-row" data-original-title="Bearbeiten" ref="" data-toggle="modal" data-target="#EditUser"> <i
<a
href="?UpdateUser=' .$ID. '"
class="btn btn-sm btn-icon btn-pure btn-default on-default edit-row"
data-original-title="Bearbeiten"
ref="" data-toggle="modal" data-target="#EditUser">
<i class="icon wb-edit" aria-hidden="true"></i></a>
<div class="modal fade" id="EditUser" aria-hidden="false" aria-labelledby="EditUserModal"
role="dialog" tabindex="-1">
<div class="modal-dialog modal-simple modal-center">
<form class="modal-content" method="POST" role="form" action="">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="EditUserModal">Benutzer bearbeiten</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-xl-12 form-group">
<p><b>Username</b></p>
<input type="text" class="form-control" name="username" value="'.$username.'">
</div>
<div class="col-xl-4 form-group">
<p><b>Vorname</b></p>
<input type="text" class="form-control" name="vorname" value="'.$vorname.'">
</div>
<div class="col-xl-8 form-group">
<p><b>Nachname</b></p>
<input type="text" class="form-control" name="nachname" value="'.$nachname.'">
</div>
<div class="col-xl-8 form-group">
<p><b>Email</b></p>
<input type="email" class="form-control" name="email" value="'.$email.'">
</div>
<div class="col-xl-4 form-group">
<p><b>TelefonNr.</b></p>
<input type="text" class="form-control" name="handy" value="'.$handy.'">
</div>
<div class="col-xl-12 form-group">
<p><b>Admin</b></p>
<input type="text" class="form-control" name="admin" value="'.$admin.'">
</div>
<div class="col-md-12 float-right">
<button class="btn btn-primary btn-outline" data-dismiss="modal" type="submit">Speichern</button>
</div>
</div>
</div>
</form>
</div>
</div>
</td>
</tr>';
}
if(isset($_POST['UpdateUser']))
{
if($_POST['UpdateUser'])
{
$stmt = $odb->execute("UPDATE Account SET username = '$username' , vorname = '$vorname', nachname = '$nachname', email = '$email', handy = '$handy', admin = '$admin' WHERE id=? ");
}
echo "<meta http-equiv='refresh()' content='0'>";
}
×
贝努泽比尔贝滕
用户名
沃名称
纳希纳姆
电子邮件
电话号码
管理员
斯皮切恩
';
}
如果(isset($\u POST['UpdateUser']))
{
如果($\u POST['UpdateUser'])
{
$stmt=$odb->execute(“更新帐户集用户名='$username',vorname='$vorname',nachname='$nachname',email='$email',handy='$handy',admin='$admin'其中id=?”;
}
回声“;
}
我问错了吗?或者为什么它没有更新?
页面上没有显示错误,但值不会更新或刷新页面。您需要在执行之前使用
准备,如下所示:
$query = 'UPDATE Account SET
username = :username,
vorname = :vorname,
nachname = :nachname,
email = :email,
handy = :handy,
admin = :admin
WHERE id = :id';
$stmt = $pdo->prepare($query);
$stmt->execute(array(
':username' => $username,
':vorname' => $vorname,
':nachname' => $nachname,
':email' => $email,
':handy' => $handy,
':admin' => $admin,
':id' => $id
));
另外,最好对每个输入值使用占位符,而不是在查询字符串中写入变量
现在我明白了:
您正在使用表单通过方法POST发送数据,并尝试读取$\u POST['UpdateUser']
以开始执行更新,但在该表单中没有名为UpdateUser
的字段。
您必须在表单中添加该值,或者使用其他字段更改if(isset($\u POST['UpdateUser'])
。您需要在执行之前使用prepare
,如下所示:
$query = 'UPDATE Account SET
username = :username,
vorname = :vorname,
nachname = :nachname,
email = :email,
handy = :handy,
admin = :admin
WHERE id = :id';
$stmt = $pdo->prepare($query);
$stmt->execute(array(
':username' => $username,
':vorname' => $vorname,
':nachname' => $nachname,
':email' => $email,
':handy' => $handy,
':admin' => $admin,
':id' => $id
));
另外,最好对每个输入值使用占位符,而不是在查询字符串中写入变量
现在我明白了:
您正在使用表单通过方法POST发送数据,并尝试读取$\u POST['UpdateUser']
以开始执行更新,但在该表单中没有名为UpdateUser
的字段。
您必须在表单中添加该值,或者使用其他字段更改if(isset($\u POST['UpdateUser'])
。其中id=?
您在哪里绑定此变量?@JayBlanchard我不确定,我对所有这些都不太熟悉:/n如果按照说明和指南进行操作,WHERE id=?
您将在哪里为此绑定变量?@JayBlanchard我不确定,我对所有这些都不太熟悉:/n如果按照说明和指南进行操作并尝试,您的解决方案看起来非常干净,我应该在将来坚持这种结构,但是它没有起作用,仍然发生同样的事情,你能发布整个代码吗?开始时似乎缺少一些东西再次检查:在我的回答中,我使用了$pdo
,但您使用了$odb
。也许你没有改变?我改变了,但它仍然不起作用,还能是什么?也许$_POST?试过了,你的解决方案看起来很干净,我应该在将来尝试坚持这种结构,但它没有起作用,仍然发生同样的事情,你能发布整个代码吗?开始时似乎缺少一些东西再次检查:在我的回答中,我使用了$pdo
,但您使用了$odb
。也许你没有改变?我改变了,但它仍然不起作用,还能是什么?也许是美元邮政?