【问题标题】:my PDO update query is inserting undefined value in only one column , why? [closed]我的 PDO 更新查询仅在一列中插入未定义的值,为什么? [关闭]
【发布时间】:2017-11-19 20:01:45
【问题描述】:

我的表中有四个记录字段

  1. 姓名
  2. 电子邮件
  3. 电话
  4. 地址

我正在使用 PDO 方法使用 ajax 更新 php 中的记录,当我调用插入查询时它工作正常,但是当我更新我的记录时它只更新三个起始字段,在地址字段中它们插入 undefined文本值,我在哪里做错了?

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

#我的html代码#

                  <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>

我的 ajax 脚本代码

<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>

PDO 文件代码

else if($page=='edit'){
      $id = $_POST['id'];
     $name = $_POST['nm'];
     $email = $_POST['em'];
     $phone = $_POST['ph'];
     $address = $_POST['ad'];

     $stmt = $db->prepare(" update crud set name=? , email=? , phone=? , address=? where id=?");  
     $stmt->bindValue(1,$name);
     $stmt->bindValue(2,$email);
     $stmt->bindValue(3,$phone);
     $stmt->bindValue(4,$address);
     $stmt->bindValue(5,$id);
     if($stmt->execute()){
        echo "succesfully updated";
     }
     else{
        echo "failed updated data";
     }
}

【问题讨论】:

  • 可能是因为你在这里的地址中有错误的#id:&lt;textarea ... id="ph-&lt;?php...
  • 所以这是一个简单的“错字”,您可以通过简单的调试找到自己。下次检查你在哪里得到了什么值......
  • no sir id 属性是正确的,我需要选择 id 这就是为什么我在 id 属性中使用此查询,此方法在上述三个标签下工作正常
  • 不,先生。 address 未定义,因为没有 id 为 'ad-'+x 的元素。 $_POST['ad'] 字符串 'undefined' 也是如此

标签: php mysql ajax pdo


【解决方案1】:

这里有一个简单的错字:

   <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 -> $_POST['ad'] 将包含字符串 'undefined'。

【讨论】:

  • 我很高兴得到反对票的解释!
  • 我不知道你为什么对杰夫投了反对票,这肯定不是我的,我的这个答案看起来是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
  • 2017-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多