【发布时间】:2017-11-19 20:01:45
【问题描述】:
我的表中有四个记录字段
- 姓名
- 电子邮件
- 电话
- 地址
我正在使用 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:
<textarea ... id="ph-<?php... -
所以这是一个简单的“错字”,您可以通过简单的调试找到自己。下次检查你在哪里得到了什么值......
-
no sir id 属性是正确的,我需要选择 id 这就是为什么我在 id 属性中使用此查询,此方法在上述三个标签下工作正常
-
不,先生。 address 未定义,因为没有 id 为 'ad-'+x 的元素。 $_POST['ad'] 字符串 'undefined' 也是如此