2017-04-09 1 views
1

私はSwift 3の新機能で、PHPを使用してサーバーにデータを渡そうとしています。私はどちらの言語でも初心者です。File_get_contentsを使用してJSON用SwiftからPHPにデータを渡す?

SWIFTからPHPにデータを送信しようとしています。

しかし、PHPで$ _POSTまたは$ _REQUESTを使用してもJSONでは機能しないことに気付きました。代わりに、 'file_get_contents'または 'PHP:// input'を使用する必要があると聞きました。

私は真剣にそれを動作させる方法を考え出すのに多くの時間を費やしました。

以下はPHP側のコードです。しかし、それはJSONエンコードではなく、Raw Dataでのみ動作しているようです。

誰かが以下のコードがSWIFTからデータを受信するのに間違っていると思いますか?

<?php 
header("Content-Type: application/json"); 
$con=mysqli_connect("localhost","123","123!!","123"); 

$menu_main_item_store_id = file_get_contents('php://input'); 
$menu_main_item_store_id_received = $menu_main_item_store_id; 

if (mysqli_connect_errno()) { 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
$sql = "SELECT * FROM menu_main_items WHERE menu_main_item_store_id=$menu_main_item_store_id_received AND menu_main_item_in_use_check = 'yes'"; 
if ($result = mysqli_query($con, $sql)) { 
    $resultArray = array(); 
    $tempArray = array(); 
    while($row = $result->fetch_object()){ 
     $tempArray = $row; 
     array_push($resultArray, $tempArray); 
    } 
echo json_encode($resultArray); 
} 

mysqli_close($con); 
?> 
+2

コードのスクリーンショットではなく、コードとして書式設定された回答内に関連コードを投稿してください。 – segFault

+0

ありがとうございます。私はコードを入れました:) – Jay

答えて

-1

//あなたはあなたのPHPに投稿されましたどのようなデータを含む文字列を与えるこのコード

<?php 
define('HOST','localhost'); 
define('USER','DatabaseUserName'); 
define('PASS','Password'); 
define('DB','DataBaseName'); 
$con = mysqli_connect(HOST,USER,PASS,DB); 
$sql = "select * from DATABAS_TABLE_NAME"; 
$res = mysqli_query($con,$sql); 
$result = array(); 
while($row = mysqli_fetch_array($res)){ 
array_push($result, 
array('Username'=>$row[0], 
'Cell'=>$row[1], 
)); 
} 
echo json_encode(array("result"=>$result)); 
mysqli_close($con); 
?> 
+1

質問に比べてあなたがやったことの説明を追加して、他の例で同じアプローチを適用する方法はありますか? – IMSoP

+0

ありがとうございました。あなたの説明は私に一歩踏み出しました。しかし、私が見つけた問題は、PHPが受け取ったすべてのものが、送信されている配列にポストされているということでした。 – Jay

0

file_get_contents('php://input')を試すことができます。データが入っているフォーマットは自動的には決まりませんので、データを何らかの形で解析する必要があります。 json_decode()である。

JSONフォーマットのエラーをチェックし、すべての入力が信頼できないことを覚えておいてください。あなたのアプリがデータを送信しているかどうかわからない場合は、誰かがURLを見つけ出し、コード。

0

スウィフトがPOSTを使用して正しいデータを送信しているようです。

let url:NSURL = NSURL(string: url)! 
let session = URLSession.shared 
let request = NSMutableURLRequest(url: url as URL) 
    request.httpMethod = "POST" 

let paramString = "table_id='1'" 
    request.httpBody = paramString.data(using: String.Encoding.utf8) 

ただし、PHPが受け取った場合、 は何も返しません。

$contents = $_REQUEST['table_id']; 
$abc = $contents; 


if (mysqli_connect_errno()) 
{ 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
$sql = "SELECT * FROM menu_main_items WHERE table_id='".$abc."'"; 

if ($result = mysqli_query($con, $sql)) { 
    $resultArray = array(); 
    $tempArray = array(); 
    while($row = $result->fetch_object()){ 
     $tempArray = $row; 
     array_push($resultArray, $tempArray); 
    } 
    echo json_encode($resultArray); 

} 

手動で$ content = "1"と入力すると、データが検索されます。

あなたはどう思われますか?

関連する問題