2015-09-30 39 views
1

AJAX味精给予成功,但数据不会在数据库中更新,你能帮助PLZ!更新MYSQL表给出成功味精,但不会更新表

HTML代码:

<div class="row"> 

         <input type="text" ng-model="updateId" class="form-control" placeholder="user Id To Update Phone"> 
         <input type="text" ng-model="updatePhone" class="form-control" placeholder="user New Phone"> 
        </div> 
        <div class="col-xs-3"> 

        </div> 
        <div class="col-xs-2"> 

         <button ng-click="updateuser()" type="button" class="btn btn-primary">Update </button> 
        </div> 
       </div> 

JavaScript代码:

$scope.updateuser = function() { 
       var data = { 
        updateId: $scope.updateId, 
        updatePhone: $scope.updatePhone 
       }; 

       $.ajax({ 
         data: data,       
         type: "post", 
         url: "update.php", 
         success: function(data){ 
          alert("Data Updated"); 
         }, 
         error:function (XMLHttpRequest, textStatus, errorThrown) { 
           if (textStatus == 'Unauthorized') { 
            alert('custom message. Error: ' + errorThrown); 
           } else { 
            alert('custom message. Error: ' + errorThrown); 
           } 

         } 
        });  

      }; 

update.php代码:

<?php 

header('Content-Type: application/json'); 
include 'connect.php'; 
$db = new database(); 
$db->setDb_name('training'); 

$db->connect(); 


if(isset($_POST)){ 
$id = $_POST['updateId']; 
$phone = $_POST['updatePhone']; 
$data = $db->update('user',array('phone'=>$phone),array('id',$id)); 
echo json_encode($data); 

} 

mysql_close(); 

?> 

更新()函数:

public function update($table,$rows,$where) 
{ 

     for($i = 0; $i < count($where); $i++) 
     { 
      if($i%2 != 0) 
      { 
       if(is_string($where[$i])) 
       { 
        if(($i+1) != null) 
         $where[$i] = '"'.$where[$i].'" AND '; 
        else 
         $where[$i] = '"'.$where[$i].'"'; 
       } 
      } 
     } 
     $where = implode('=',$where);   
     $update = 'UPDATE '.$table.' SET '; 
     $keys = array_keys($rows); 
     for($i = 0; $i < count($rows); $i++) 
     { 
      if(is_string($rows[$keys[$i]])) 
      { 
       $update .= $keys[$i].'="'.$rows[$keys[$i]].'"'; 
      } 
      else 
      { 
       $update .= $keys[$i].'='.$rows[$keys[$i]]; 
      } 

      // Parse to add commas 
      if($i != count($rows)-1) 
      { 
       $update .= ','; 
      } 
     } 
     $update .= ' WHERE '.$where; 
     $query = @mysql_query($update); 

    } 

} 

我正在使用angularJS,当试图在update.php中运行更新它工作正常,但使用AJAX它给了“数据更新”味精,但实际上并没有更新表。为什么?

+0

我认为你有问题的PHP文件..检查网络上的PHP错误 –

+0

你说update.php工作正常。你如何将数据发布到脚本进行测试? –

+0

当我运行更新()函数在单独的PHP文件,它运作良好,并更新数据,是你的意思? –

回答

0

首先,从(我假设)jQuery的ajax成功回调只是意味着HTTP请求成功。这意味着它有一个200响应代码。对于PHP中的大部分次要和重大错误,请求仍然会成功。如果你想知道哪里出了问题,使错误在PHP报告,并确保显示的错误:

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

现在,你应该能够看到任何错误。使用诸如Chrome的开发者控制台之类的东西来查看您的PHP代码中发生了什么错误。另一个选择是在PHP中记录错误并在请求后检查错误日志。

+0

我写了这段代码PHP文件,但它不显示任何东西 –

+0

确保更新功能正常工作。另一个注意事项:更新函数总是被调用,$ _POST应该总是被设置,当没有变量被设置时它将是一个空数组。使用$ _SERVER ['REQUEST_METHOD'] =='POST'检查此内容 开发人员控制台向您显示有关请求的信息?它返回的是什么状态码,内容是什么? –

+0

请删除mysql_query之前的@,它会抑制您目前可能丢失的错误。 –