希望你能帮我这个忙。我有一个数组,im发送到我的php脚本通过ajax处理。我想做的是循环遍历数组,并根据某个键的值,为该数组执行SQL语句。大多数情况下,它将是多个数组。下面是我得到的-- far....for --这个例子,我输入了静态值:
<form id='logForm' method='post' action='seatingProcess.php'>
<span id='"219"' changeType='SEATCHANGE' setDeskId='9-4' prevSeatNew='T'></span>
<span id='"229"' changeType='SEATCHANGE' setDeskId='2-5' prevSeatNew='T'></span>
<span id='"299"' changeType='REMOVESEAT' setDeskId='0'></span>
<div class='btn btn-primary' type='submit' id='submit'>Submit</div>
</form>Javascript
$('#submit').click(function(){
var spans = $('#logForm span');
var data = [];
$(spans).each(function(){
var newItem = {};
var item = $(this);
newItem.id = $(item).attr('id');
newItem.deskval = $(item).attr('setDeskId');
newItem.changeType = $(item).attr('changeType');
newItem.prevSeatNew = $(item).attr('prevSeatNew');
data.push(newItem);
})
$.ajax({
type: "POST",
url: "seatingProcess.php",
data: {data:data},
success: function(msg){
console.log(msg); //testing the sql statements
},
error: function(){
alert('fail');
}
})seatingProcess.php
<?php
if(isset($_POST['data'])){
$obj = $_POST['data'];
$doKeyChange = ['changeType'];
$addValue = 'SEATCHANGE';
$delValue = 'REMOVESEAT';
foreach($obj as $doKeyChange => $addValue) {
//Array[0] {'id' => 219, 'deskval' => 9-4, 'prevSeatNew' => T}
//Array[1] {'id' => 229, 'deskval' => 2-5, 'prevSeatNew' => T}
$userid = ['id'];
$desk_id = ['desk'];
$set_desk_id = ['deskval'];
$prevseat = ['prevSeat'];
$prevseatNew= ['prevSeatNew'];
$sqlAdd = "UPDATE roster SET seat='$set_desk_id' preDesk='$prevseatNew' WHERE id='$userid'";
print_r ($sqlAdd);
}
foreach($obj as $doKeyChange => $delValue) {
//Array[2]{'id' => 299, 'deskval' => 0}
$userid = ['id'];
$set_desk_id = ['deskval'];
$sqlAdd = "UPDATE roster SET seat='$set_desk_id' WHERE id='$userid'";
print_r ($sqlAdd);
}
}
?>目前,我收到的错误如下:
注意:数组到字符串的转换
不知道该怎么做,提前谢谢
问题
如何编写php,使其获得所请求的键的值并将其放入SQL语句中?
发布于 2015-11-10 17:04:04
您目前没有尝试将data数组序列化为可以由$.ajax()和PHP正确处理的格式。当您试图依赖jQuery的默认对象查询字符串转换时,如下所示:
data: {data:data},jQuery期望data是可以序列化为查询字符串的对象(即键值对)。将数字索引数组作为data传递将导致所看到的转换错误。
您需要正确地创建一个序列化查询字符串,或者(这将是我的建议),因为您试图传递一个更复杂的数据结构,您可能会考虑使用POSTing头类型将数据结构和application/json编码到PHP。这将要求您在PHP中读取原始的POSTed数据,而不是从$_POST读取数据,因为PHP除表单编码的类型之外,不填充内容类型标头的$_POST超全局。
要发送JSON,ajax调用可能如下所示:
$.ajax({
type: "POST",
url: "seatingProcess.php",
contentType: "application/json",
data: JSON.stringify(data),
success: function(msg){
console.log(msg); //testing the sql statements
},
error: function(){
alert('fail');
}
})在PHP中,您从原始输入中读取JSON,如下所示:
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);https://stackoverflow.com/questions/33634970
复制相似问题