我的PDO更新查询只在一列中插入未定义的值,为什么?

时间:2017-06-17 00:02:59

标签: php mysql ajax pdo

我的桌子上有四个记录区域

  1. 名称
  2. 电子邮件
  3. 电话
  4. 地址
  5. 我正在使用PDO方法用ajax更新php中的记录,当我调用insert查询时它工作正常但是当我更新我的记录时它只更新了三个起始字段,在地址字段中他们插入 undefined 文字值,我在哪里做错了?

    我前端的截图 https://drive.google.com/open?id=0B-PfnAjLGR2xendqM2NsaUVuLW8

    #我的HTML代码#

    defaultdict(<class 'dict'>, {
      'AL2G22360.t1': {
        'Sp': {
          'keys': 'AL2G22360.t1_Sp',
          'length': '663'},
        'My': {
          'keys': 'AL2G22360.t1_My',
          'length': '389'}},
      'AL2G22220.t1': {
        'My': {
          'keys': 'AL2G22220.t1_My',
          'length': '865'},
        'Sp': {
          'keys': 'AL2G22220.t1_Sp',
          'length': '553'}, .....}})
    

    我的ajax脚本代码

                      <div class="modal-body">
                      <input type="hidden" id="<?php echo $row['id'];  ?>" value="<?php echo $row['id'];  ?>">
    
                         <div class="form-group">
                            <label for="nm">Name</label>
                            <input type="text" class="form-control" id="nm-<?php echo $row['id'];  ?>" value= "<?php echo $row['name'];  ?>">
                            </div>
                            <div class="form-group">
                            <label for="em">Email</label>
                            <input type="Email" class="form-control" id="em-<?php echo $row['id'];  ?>" value= "<?php echo $row['email'];  ?>">
                            </div>
                            <div class="form-group">
                            <label for="ph">Phone</label>
                            <input type="number" class="form-control" id="ph-<?php echo $row['id'];  ?>" value= "<?php echo $row['phone'];  ?>">
                            </div>
                            <div class="form-group">
                            <label for="ad">Address</label>
                            <textarea type="text" class="form-control" id="ph-<?php echo $row['id'];  ?>" > <?php echo $row['address'];?> </textarea>
                            </div>
                        </div>
    
                      <div class="modal-footer">
                        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                        <button type="submit" onclick="updateData(<?php echo $row['id']; ?>)" class="btn btn-primary">Update</button>
                      </div>
                    </form>
    

    PDO文件代码

    <script type="text/javascript">
    function updateData(str){
               var id = str;
               var name = $('#nm-'+str).val();
               var email = $('#em-'+str).val();
               var phone = $('#ph-'+str).val();
               var address = $('#ad-'+str).val();
               $.ajax({
                type:"POST",
                url: "server.php?p=edit" ,
                data : "nm="+name+"&em="+email+"&ph="+phone+"&ad="+address+"&id="+id,
                success :function(data){
                  viewData();
                }
               });
              }
       </script>
    

1 个答案:

答案 0 :(得分:0)

这里有一个简单的拼写错误:

   <label for="ad">Address</label>
                                          <!-- here: -->
   <textarea type="text" class="form-control" id="ph-<?php echo $row['id'];  ?>" > <?php echo $row['address'];?> 
   </textarea>

应该是

   ... id="ad-...

因为你在js中提到它是这样的:

   var address = $('#ad-'+str).val();

由于没有ID为'ad - '+ x的html元素,address将为undefined - &gt; $_POST['ad']将包含字符串'undefined'。