2015-08-15 52 views
1

我想在服務器端使用角度前端和php來更新一些內容。在php中檢索json數據:json_decode不工作?

下面是使用的片斷或代碼:

主JS

,呼籲更新:

updateinscription: function($params){ 
    var urlphp="http://localhost/cordova/mbacly/www/php/"; 
    var tournois={}; 
    $http.get(urlphp+"saveinscription.php?data="+$params).success(function(data){ 
     console.log("retour "+data); 

    }); 

這裏$ params爲以下JSON:

Object { user_id: "62", uname: "admin", tournois_id: "79", inscriptions_simple: "0", inscriptions_double: "1", inscriptions_mixte: "1", inscriptions_simple_serie: "Elite", inscriptions_double_serie: "A", inscriptions_mixte_serie: "B", inscriptions_double_partenaire_id: "64", 7 de plus… } 

PHP saveinscription.php是以下內容:

<?php 
    require("config.php"); 
    if (isset($_GET['data'])) { 
     echo "tato"; 
     $json = stripslashes($_GET['data']); 
     echo $json; 

     $data = json_decode($json, true); 

     echo $data; 
     $result = $data; 
     switch ($data['type']) { 
      // case "insert": 
      // $query="INSERT INTO `jnew_tournois_tournois_inscriptions`(`tournois_inscriptions_uid`,`tournois_inscriptions_tid`,`tournois_inscriptions_simple`,`tournois_inscriptions_double`,`tournois_inscriptions_mixte`,`tournois_inscriptions_simple_serie`,`tournois_inscriptions_double_serie`,`tournois_inscriptions_mixte_serie`,`tournois_inscriptions_double_partenaire`,`tournois_inscriptions_mixte_partenaire`,`tournois_inscriptions_double_partenaire_id`,`tournois_inscriptions_mixte_partenaire_id`,`tournois_inscriptions_double_partenaire_club`,`tournois_inscriptions_mixte_partenaire_club`,`tournois_inscriptions_comment`) VALUES($data['uid'],$data['tid'],$data['inscriptions_simple'],$data['$inscriptions_double'],$data['$inscriptions_mixte'],'$data['serie_simple']','$data['serie_double']','$data['serie_mixte']','$data['partenaire_double']','$data['partenaire_mixte']','$data['partenaire_double_id']','$data['partenaire_mixte_id']','$data['partenaire_double_club']','$data['partenaire_mixte_club']','$data['comment']')"; 
      // break; 
     case 'update': 
      $query = "UPDATE `jnew_tournois_tournois_inscriptions` SET tournois_inscriptions_simple=".$data['inscriptions_simple'].","; 
      $query.="tournois_inscriptions_double=".$data['inscriptions_double'].","; 
      $query.="tournois_inscriptions_mixte=".$data['inscriptions_mixte'].",";$query.="tournois_inscriptions_simple_serie='".$data['serie_simple']."',"; 
      $query.="tournois_inscriptions_double_serie='".$data['serie_double']."',"; 
      $query.="tournois_inscriptions_mixte_serie='".$data['serie_mixte']."',"; 

      $query.="tournois_inscriptions_double_partenaire='".$data['partenaire_double']."',"; 
      $query.="tournois_inscriptions_mixte_partenaire='".$data['partenaire_mixte']."',"; 
      $query.="tournois_inscriptions_double_partenaire_id=".$data['partenaire_double_id'].","; 
      $query.="tournois_inscriptions_mixte_partenaire_id=".$data['partenaire_mixte_id'].","; 
      $query.="tournois_inscriptions_double_partenaire_club='".$data['partenaire_double_club']."',"; 
      $query.="tournois_inscriptions_mixte_partenaire_club='".$data['partenaire_mixte_club']."',"; 
      $query.="tournois_inscriptions_comment='".$data['$comment']."' WHERE tournois_inscriptions_id=".$data['tiid']; 

      $result. = $query; 

      break; 
     case "delete": 
      $query = "DELETE FROM `jnew_tournois_tournois_inscriptions` where tournois_inscriptions_tid=".$data['tid']." and tournois_inscriptions_uid=".$data['uid']; 
      break; 
     } 
     // debug.print($query); 
     try { 
      $bdd = new PDO($db_config['SGBD'] .':host='. $db_config['HOST'] .';dbname='. $db_config['DB_NAME'], $db_config['USER'], $db_config['PASSWORD'], $db_config['OPTIONS']); 
      $reponse = $bdd->prepare($query); 
      $reponse->execute(); 
     //  $arr = $reponse->fetchAll(PDO::FETCH_ASSOC);   
      } catch(Exception $e) { 
       // En cas d'erreur, on affiche un message et on arrête tout 
       $result.=$query . "zorro<br>" . $e->getMessage(); 
       debut.print($result); 
      } 

      $bdd=null; 

      echo $result = json_encode($arr); 
    } 
    ?> 

我得到這個在Firefox控制檯:

retour 
tato[object Object]zorro<br>SQLSTATE[42000]: Syntax error or access violation: 1065 Query was emptynull 

由於$query不爲空,而我的json_decode回波就不會顯示任何東西,我想什麼是錯在那裏,但$json似乎有一個對象,所以我想json_decode不工作,但我不明白爲什麼。

任何幫助歡迎!

回答

1

之前發送$ PARAMS您更新功能,將其轉換爲URL編碼字符串:

encodeURIComponent(JSON.stringify($params)) 
+0

謝謝你,可以完美運行! – Nightf

+0

很好,很高興它幫助:-) –

+0

PS:對於未來的用戶有同樣的問題,請標記答案是正確的,所以它會得到綠色的複選標記:-) –