2016-08-18 15 views
0

MySQLデータベースからJSONオブジェクトによってアプリケーションに複数のテーブル行を取得するにはどうすればよいですか。JSONオブジェクトからアプリケーションに複数のテーブル行を取得するには

テーブルから1行を取得すると、うまく動作します。しかし、私は複数の行を取得することはできません "SyntaxError:予期しないトークン{JSONの位置で..."と言うエラーをスローする

私はどうすればこの助けてください!

これは私の角度コード..です(ここでは変数を渡すIMと一致する行を取得し、コンソールにそれらを得る。)

$scope.companySelected = function(emp_Comp){ 

    console.log('Selected Item is : '+ emp_Comp); 

    $http({ 
     method: 'GET', 
     url: 'http://localhost/companyPopulate.php', 
     params: {employeeCompany : emp_Comp} 

    }).then(function successCallback(response) { 
     $scope.data = response.records; 
     console.log('success :'+ JSON.stringify(response)); 
     //console.log(testdata.data); 

    }, function errorCallback(response) { 
     //console.log('error',response); 
     // called asynchronously if an error occurs 
     // or server returns response with an error status. 
    }); 

    } 

これは私が書いたPHPスクリプトです...

<?php 
header("Access-Control-Allow-Origin: *"); 
header("Content-Type: application/json; charset=UTF-8"); 

    //http://stackoverflow.com/questions/18382740/cors-not-working-php 
    if (isset($_SERVER['HTTP_ORIGIN'])) { 
     header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}"); 
     header('Access-Control-Allow-Credentials: true'); 
     header('Access-Control-Max-Age: 86400'); // cache for 1 day 
    } 

    // Access-Control headers are received during OPTIONS requests 
    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { 

     if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) 
      header("Access-Control-Allow-Methods: GET, POST, OPTIONS"); 

     if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) 
      header("Access-Control-Allow-Headers:  {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}"); 

     exit(0); 
    } 

    include_once 'config.php'; 

    //create connection 
    $conn = new mysqli($mysql_host, $mysql_user, $mysql_password,$mysql_database); 

    // Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 


    $fields = array(); 

    if(isset($_GET['employeeNo'])) 
     $fields['employeeNo'] = $_GET['employeeNo']; 

    if(isset($_GET['employeeName'])) 
     $fields['employeeName'] = $_GET['employeeName']; 

    if(isset($_GET['employeeCompany'])) 
     $fields['employeeCompany'] = $_GET['employeeCompany']; 


    $sql = "SELECT employeeName,employeeNo FROM employee_info WHERE "; 
    $count = 0; 

    foreach($fields as $key => $value){ 
     if($count == 0) 
      $sql .= $key . "='" . $value . "' "; 

     else 
      $sql .= "AND " . $key . "='" . $value . "' "; 

     $count++; 
    } 

    $fields = array(); 

     $result = $conn->query($sql); 

      $outp = ""; 

      while($rs = $result->fetch_array(MYSQLI_ASSOC)) 
      { 
       if ($outp != "") 
       { 
        $outp .= ","; 
       } 

       $outp .= '{"employeeName":"' . $rs["employeeName"] . '"}'; 



      } 

      $outp ='{"records":['.$outp.']}'; 


      $conn->close(); 

     echo $outp; 
    /* }else{ 
     echo 'parameters expected from the client are missing! :) '; 
    } */ 

?> 

ブラウザでスクリプトを単独で実行しているときに正しい結果が得られました。

私を助けてください! ありがとうございました!私はあなたがこの

$output=array(); 

while($rs = $result->fetch_array(MYSQLI_ASSOC)){ 
    $output[]=$rs; 
} 
json_encode($output); 


header('Content-Type: application/json'); 
echo $output; 
+0

ジョインを使用して複数のテーブルからデータを取得する – Karthi

+0

成功したログオンの応答は何ですか? – AranS

答えて

0

のようなJSONの作成を簡素化することができるはずだと思う

+0

私のjason形式が間違っていた! json_encodeはうまくいった!!ありがとう!! –

0

があるため echo json_encode($outp); の代わりecho $outp;を試してみてください。それはjson文字列として渡す必要があります。あなただけが配列にそれを解析することができます。

+0

私のjason形式が間違っていた! json_encodeはうまくいった!!ありがとう!! –

関連する問題