duanliao6077 2017-09-28 21:24
浏览 20

PDO更新用户信息查询

its me again :) i'm almost done with my project theres only one more thing left. i am not able to update values in my database using pdo. this is my script

<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'>";
           }

am i doing a wrong query ? or why is it not updating? there is no error showing up on the page, but the values are not updating nor refreshing the page.

  • 写回答

1条回答 默认 最新

  • duanlun4411 2017-09-28 21:41
    关注

    You need to use prepare before execute, like this:

    $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
    ));
    

    Also, is better to use placeholders for every input value, instead of write variables inside the query string.

    And now I figured out this:

    You are using a form to send data with method POST and trying to read $_POST['UpdateUser'] to start executing the update, but in that form there is no field called UpdateUser. You have to add that value inside the form, or change the if (isset($_POST['UpdateUser'])) with some other field.

    评论

报告相同问题?

悬赏问题

  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch