【问题标题】:Passing Array to PHP using angularjs使用 angularjs 将数组传递给 PHP
【发布时间】:2017-10-27 04:47:19
【问题描述】:

警告:mysqli_real_escape_string() 期望参数 2 为字符串,数组在 C:\xampp\htdocs\nav\php\pinsert.php 中给出

当我尝试在 angularjs 中使用 http.post 将数组发布到 php 时,出现上述错误。将数组发送到php并将其插入数据库的代码是什么。

app.js

     $scope.saveRecord = function (newProduct)
    {
      $scope.albumNameArray = []; 

    angular.forEach($scope.check, function(album){

            if (album.select)  $scope.albumNameArray.push(album.name);

        });

       $http.post("php/pinsert.php",{
                     'names' : $scope.newProduct.name,
                     'catg' : $scope.newProduct.catg,
                     'stat' : $scope.newProduct.stat,
                      'tag' : $scope.albumNameArray
              })  

PHP

     <?php 


   $connect = mysqli_connect("localhost", "root", "","user");
   $data = json_decode(file_get_contents("php://input"));


  $p_name = mysqli_real_escape_string($connect, $data->names);
  $p_catg = mysqli_real_escape_string($connect, $data->catg);
  $status = mysqli_real_escape_string($connect, $data->stat);
  $tag = mysqli_real_escape_string($connect, $data->tag);
   $query = "INSERT INTO products(pname,pcatg,status,tag)  VALUES ('$p_name','$p_catg','$status','$tag')";

    $result = mysqli_query($connect, $query) ;

  if($result == TRUE) 
   {  
       echo "Data Inserted...";  
  }  
  else  
  {  
       echo 'Error';  
  }  

  ?>

【问题讨论】:

  • 错误提示您将数组作为第二个参数传递给 mysqli_real_escape_string() 而不是字符串。
  • 回答我的问题.. 使用 angularjs 将数组发送到 php 的代码是什么
  • 如果您将数组传递给函数,则表示您收到了一个数组。这就是为什么我认为您不理解错误消息的原因。
  • print_r($data)
  • 尝试以 $data['names'] 方式访问数据。

标签: php angularjs arrays


【解决方案1】:

尝试使用 json 数据。

var data = { 'names' : $scope.newProduct.name, 'catg' : $scope.newProduct.catg, 'stat' : $scope.newProduct.stat, 'tag' : $scope.albumNameArray };
 $http({ url: 'php/pinsert.php',
            method: "POST",
            data: JSON.stringify(data),
            headers: {'Content-Type': 'application/json'}
        }).then(function(reponse){
          }) 

【讨论】:

    【解决方案2】:

    我就是这样用的

    $scope.myArray = [14742,  14744,  22781,  15540 ];
    

    $http 请求需要如下所示:正如您所见,'parameter[]' ... 是数组类型。否则你需要 JSOM.strignify(data) ... 然后 json_decode 在 php 中。

    $scope.saveSomething = function(){
            $http({
                method: 'post',
                url: '/some-url',
                params:{
                    'parameter[]': $scope.myArray,
                }
            });
        };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-22
      • 1970-01-01
      • 2012-01-26
      • 2021-02-10
      • 1970-01-01
      • 2016-01-01
      • 2018-04-23
      • 2020-02-13
      相关资源
      最近更新 更多