【问题标题】:ajax returns success but mysql db not updatedajax 返回成功但 mysql 数据库未更新
【发布时间】:2013-07-31 15:01:32
【问题描述】:

我有一个 javascript for 循环,它将数组发送到 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";           
      }

 }   
?>

INSERT 和 DELETE 函数没问题,但 UPDATE 返回成功语句但不更新数据库。

谁能看出问题出在哪里?

【问题讨论】:

  • 你能仔细检查一下你使用的是同一个数据库吗?
  • 一旦你解决了你的问题,你最好看看清理你的数据:stackoverflow.com/questions/129677/…
  • 您的代码中存在一个根本问题:您从一个循环中触发了多个 AJAX 调用。由于 AJAX 调用的异步特性可能导致各种不可预知的问题。您应该重写您的代码,使其成为一个传递整个数组的 AJAX 调用。
  • @grim 我目前正在构建,当我让应用程序工作时,安全性将被排序
  • 即使没有更新记录,UPDATE也会成功返回(它不返回修改记录的数量,只返回查询是“可运行”的事实),所以如果你的 $ref/$page_ref 夫妇不引用现有记录它无论如何都返回 true

标签: php javascript mysql sql ajax


【解决方案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'"

(即您尝试运行的查询)。

看看这是否能给你一些线索。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      • 2020-07-20
      • 2012-04-22
      • 2019-01-24
      • 1970-01-01
      相关资源
      最近更新 更多