PDO更新用户信息查询

时间:2017-09-28 21:24:55

标签: 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 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'>";
           }
我正在做错误的查询吗?或者为什么不更新? 页面上没有显示错误,但值不会更新也不会刷新页面。

1 个答案:

答案 0 :(得分:0)

您需要在prepare之前使用execute,如下所示:

$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发送数据并尝试阅读$_POST['UpdateUser']以开始执行更新,但在该表单中没有名为UpdateUser的字段。 您必须在表单中添加该值,或者使用其他字段更改if (isset($_POST['UpdateUser']))