【问题标题】:Update sql data using AngularJS使用 AngularJS 更新 sql 数据
【发布时间】:2017-08-28 18:21:49
【问题描述】:

我需要使用 Angular 更新数据 我有带有列的 SQL 表(任务列表):id、taskname、date、prior 我需要有可能只更新当前字段,使用按键 字段需要根据其 id 更新。

HTML

    <div class="task-list" ng-repeat="x in names">
           <div class="col-md-1">
        <input type="text" value="{{x.prior}}" ng-keypress="UpdateInfo()"/>
           </div>
        <div class="col-md-5">
        <input type="text" value="{{x.taskname}}" ng-keypress="UpdateInfo()"/> <input type="submit" name="btnInsert" class="btn btn-info" ng-click="DeleteInfo()" value="Delete"/> 
           </div>
           <div class="col-md-5">
               <input type="date" value="{{x.startdate}}" ng-keypress="UpdateInfo()"/>
           </div>


  </div>

控制器

$scope.UpdateInfo = function(){  
           $http.post(  
                "update.php",  
                {'taskname':$scope.taskname, 'comments':$scope.comments, 'prior':$scope.prior, 'startdate':$scope.startdate }  
           ).success(function(data){  
                alert(data);  
               if (data == true) {
getInfo();
}

           });  
      }

PHP 在那里我试图只更新任务名

$data = json_decode(file_get_contents("php://input"));  
 if(count($data) > 0)  
 {  
     $id = mysqli_real_escape_string($connect, $data->id);
      $taskname = mysqli_real_escape_string($connect, $data->taskname);       
      $comments = mysqli_real_escape_string($connect, $data->comments);  
     $startdate= mysqli_real_escape_string($connect, $data->startdate);  
     $prior= mysqli_real_escape_string($connect, $data->prior);
     $query = "UPDATE tbl_user SET taskname='$taskname' WHERE id='$id'";
      if(mysqli_query($connect, $query))  
      {  
           echo "Data Update...";  
      }  
      else  
      {  
           echo 'Error';  
      }  
 }

按键后我只看到“数据更新...”。但任务名称没有更新。

【问题讨论】:

  • 您没有在 JSON 对象中发送 id
  • 这绝对是问题所在!
  • @Chris 你能更详细地解释一下我需要改变什么来解决这个问题吗?我的 SQL 表中已经有 id 并且它工作正常,当我添加新任务时
  • 您正在尝试执行更新,但您的 PHP 代码不知道您正在尝试更新的 ID。这需要包含在您在 POST 请求中发送的字段列表中
  • 在插入新记录时可以这样做,但如果您想使用 UPDATE 更新特定记录,则需要指定要更新的 ID。

标签: javascript php sql angularjs


【解决方案1】:

您正在发送 POST 请求,所以我认为您不需要:

$data = json_decode(file_get_contents("php://input")); 

而是将变量称为$_POST['taskname'] 等等..

【讨论】:

  • 不,他们这样做是因为请求不是表单编码的。除非 Angular 默认这样做?
  • 是的,让我们看看。在我的角度应用程序中,我使用 http.post 并且不设置任何表单编码。在我的后端 API 中,我通过 $_POST 而不是 php://input 访问变量
  • 无论如何,无论角度如何,这都不是问题:P
猜你喜欢
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-29
  • 2021-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多