使用 file_get_contents 将数据从 Swift 传递到 PHP for JSON?

Passing Data from Swift to PHP for JSON using file_get_contents?

我是 Swift 3 的新手,我正在尝试使用 PHP 将一些数据传递到服务器。可以肯定的是,我是两种语言的初学者。

我正在尝试接收从 SWIFT 到 PHP 的数据。

但是,我意识到 PHP 中的 $_POST 或 $_REQUEST 不适用于 JSON。相反,我听说有必要使用 'file_get_contents' 或 'PHP://input'.

所以我真的花了很多时间来弄清楚如何让它发挥作用。

以下是PHP这边的代码。但是,它似乎只适用于原始数据,不适用于 JSON 编码。

有没有人认为下面的代码不正确,无法从 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);
?>

// 你可以试试这个代码

 <?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);
?>

file_get_contents('php://input') 将为您提供一个字符串,其中包含发布到 PHP 的任何数据。它不会自动计算出数据的格式,因此您需要以某种方式解析数据,例如json_decode().

记得检查 JSON 格式中的错误,并且所有输入都是不受信任的 - 您不确定是您的应用程序发送数据,有人可以找出 URL 并发送一些奇怪的东西来破解你的 PHP 代码。

Swift 似乎正在使用 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 收到它时, 它returns没什么。

$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";然后检索数据。

您认为问题是什么?