更新MYSQL表给出了成功的消息,但不会更新表

时间:2015-09-30 10:08:45

标签: javascript php mysql ajax

AJAX msg给出了成功,但数据没有在DB中更新,你可以帮助PLZ!

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

?>

update()函数:

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它会提供“Data Updated”msg但实际上并没有更新表..为什么?

1 个答案:

答案 0 :(得分:0)

首先,来自(我假设)jQuery的ajax成功回调只是意味着HTTP请求成功。这意味着它有一个200响应代码。由于PHP中的大多数次要错误和一些主要错误,请求仍然会成功。如果您想知道出了什么问题,请在PHP中启用错误报告,并确保显示错误:

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

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