使用jQuery AJAX更新mysql表

问题描述 投票:1回答:1

我使用jQuery AJAX来更新表。但是AJAX只能第一次运行,其他请求消失了。

JavaScript的

function uploadItems(data, step, savetype) {                                                                                                                    
            data.append('step', step);                                                                                                                                                      data.append('savetype', savetype);                                                                                                                           
            data.append('new_store_id', store_id);                                                                                                                       

            $.ajax({                                                                                                                                                     
                url: "order_store_edit.php?store_id="+store_id,                                                                                                          
                type: "POST",                                                                                                                                            
                data: data,                                                                                                                                              
                contentType: false,                                                                                                                                      
                processData: false,                                                                                                                                      
                async: true                                                                                                                                              
            })                                                                                                                                                           
            .done(function(data)                                                                                                                                         
            {                                                                                                                                                            
                console.log(data);                                                                                                                                       
            })
            .fail(function(xhr, text_status, errorThrown)                                                                                                                
            {                                                                                                                                                            
                return false;                                                                                                                                            
            });                                                                                                                                                          
}

PHP

foreach ($set_item_arr as $i => $value) {                                                                                                                            
        order_item_up($item[$i]['item_id'], $value);                                                                                                                     
        echo $item[$i]['item_id'] . ' : ' . $value['disable'] . "\n";                                                                                                    
}

MySQL的

function order_item_up($item_id, $set_arr)                                                                                                                                   
{                                                                                                                                                                            
    if (! isset($item_id)) {                                                                                                                                                 
        echo 'no id';                                                                                                                                                        
        return;                                                                                                                                                              
    }                                                                                                                                                                        
    global $db;                                                                                                                                                              
    $sql = 'UPDATE tablename SET ';                                                                                                                                
    foreach ($set_arr as $key => $val) {                                                                                                                                     
        $sql .= $key."='".$val."', ";                                                                                                                                        
    }                                                                                                                                                                        
    $sql = substr($sql, 0, -2);                                                                                                                                              
    $sql .= " WHERE item_id = '$item_id'";                                                                                                                                   
    return $db->execute($sql);                                                                                                                                               
}

例如,我有20个表单,我将其中的10个附加到一个FormData,然后调用uploadItems。因此它会发送两次,但更新查询仅适用于第一次。

没有显示错误消息,控制台中没有,浏览器中没有。

这个问题的可能原因是什么?

编辑:

是否可能由表级锁定引起?我的引擎是MyISAM。

编辑:编辑SQL查询的结果

XHR finished loading: 
983 : 1 
984 : 1 
985 : 1 
986 : 1 
987 : 1 
988 : 1
989 : 1 
990 : 1 
991 : 1 
992 : 1

XHR finished loading:  
no id : 1 
no id : 1

正如我所提到的,第二个XHR无法更新数据库。


Solved

我发现了问题...我应该使用item_id而不是数组索引,因为更新数据库后数组大小会有所不同。

javascript php jquery mysql ajax
1个回答
0
投票
function order_item_up($item_id, $set_arr)                                                                                                                                   
{    
    foreach ($set_arr as $key => $val) 
    {         
        $qry1="UPDATE tablename SET". $key."='".$val."' where $item_id='".$item_id."'";
        $re=mysql_query($qry1)or die(mysql_error());
    }
}   

将此更新部分用于no.of行。

© www.soinside.com 2019 - 2024. All rights reserved.