Php 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

又是我:) 我的项目快完成了,只剩下一件事了。 我无法使用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 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
。也许你没有改变?我改变了,但它仍然不起作用,还能是什么?也许是美元邮政?