2013-07-31 123 views
0

我有一个JavaScript的循环,发送数组到ajax页面来更新mysql数据库。ajax返回成功,但MySQL数据库未更新

我赞同结果回到原来的页面,它的回声是成功的,但是当我检查数据库没有发生任何变化

我的JavaScript的for循环发送阵列

for(var m=0; m<array.length; m++){ 
    $.post("update_page_positions.php",{page_ref:array[m][0], ref:array[m][12], menu_pos:array[m][1], sub_menu_pos:array[m][2], top_menu:array[m][3], pagelink:array[m][4], indexpage:array[m][5], hidden:array[m][6], page_title:array[m][7], page_desc:array[m][8], page_keywords:array[m][9], page_name:array[m][10], deletedpage:array[m][11]},   
     function(data,status){ 
      alert("data="+data+" status="+status); 
});     

这里是PHP AJAX页面更新数据库

<? 
    include("connect.php");  
    $ref = $_POST['ref']; 
    $page_ref = $_POST['page_ref']; 
    $menu_pos = $_POST['menu_pos']; 
    $sub_menu_pos = $_POST['sub_menu_pos']; 
    $top_menu = $_POST['top_menu']; 
    $indexpage = $_POST['indexpage'];  
    $page_name = $_POST['page_name'];  
    $page_title = $_POST['page_title']; 
    $page_desc = $_POST['page_desc']; 
    $page_keywords = $_POST['page_keywords']; 
    $hidden = $_POST['hidden']; 
    $pagelink = $_POST['pagelink']; 
    $deletedpage = $_POST['deletedpage']; 

    $query = mysql_query("SELECT * FROM pages WHERE ref='$ref' AND page_ref='$page_ref'"); 

if(mysql_num_rows($query)==0){ 
    mysql_query("INSERT INTO pages(page_ref, ref, page_name, menu_pos, sub_menu_pos, top_menu, link, indexpage) VALUES('$page_ref','$ref','$page_name','$menu_pos','$sub_menu_pos','$top_menu','$pagelink','$indexpage')"); 
} 

if($deletedpage=="1"){ 
     mysql_query("DELETE FROM pages WHERE ref='$ref' AND page_ref='$page_ref'");   
     mysql_query("DELETE FROM site_content WHERE ref='$ref' AND page_ref='$page_ref'"); 
} 
else{  
     if(mysql_query("UPDATE pages SET menu_pos='$menu_pos', sub_menu_pos='$sub_menu_pos', top_menu='$top_menu', indexpage='$indexpage', page_name='$page_name', page_title='$page_title', desc1='$page_desc', keywords_list='$page_keywords', hidden='$hidden', link='$pagelink' WHERE ref='$ref' AND page_ref='$page_ref'")){ 

     echo "updated!"; 
    } else{ 
     echo "error";   
     } 

} 
?> 

的插入和删除功能都很好,但UPDATE返回成功语句,但不更新数据库。

任何人都可以看到什么问题是?

+0

你可以仔细检查一下你使用的是同一个数据库吗? – Halcyon

+0

一旦你解决了你的问题,你会很好的看​​待清理你的数据:http://stackoverflow.com/questions/129677/whats-the-best-method-for-sanitizing-user-input-with -php –

+0

代码中存在一个基本问题:您可以从循环中激发多个AJAX调用。由于AJAX调用的异步性质可能导致各种不可预知的问题。你应该重写你的代码,使它成为一个传递给整个阵列的AJAX调用。 – ciruvan

回答

1

发布作为回答,因为评论是太难以阅读:

而不是回送“更新”,尝试呼应

"UPDATE pages SET menu_pos='$menu_pos', sub_menu_pos='$sub_menu_pos', top_menu='$top_menu', indexpage='$indexpage', page_name='$page_name', page_title='$page_title', desc1='$page_desc', keywords_list='$page_keywords', hidden='$hidden', link='$pagelink' WHERE ref='$ref' AND page_ref='$page_ref'" 

(即你想运行查询)。

看看是否给你一些线索。

+0

谢谢ref没有通过 –

0

UPDATE报告成功,但在WHERE子句拒绝更新表中的所有行时不执行任何操作。

也许$ page_ref标识符是正确的(因此DELETE有效),但是完整的$ page_ref和$ ref组合是不是?

相关问题