繁体   English   中英

使用jQuery AJAX更新mysql表

[英]Using jQuery AJAX to update table of mysql

我使用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);                                                                                                                                               
}

例如,我有二十个表单,然后将其中十个附加到一个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无法更新数据库。


解决了

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

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());
    }
}   

使用此更新部分的行数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM