以下のオンラインチュートリアルに従って、PHP APIを作成しました。私は、Chromeの "高度な休息クライアント" を使用する場合APIのURLを使用すると、PHP _POST ['field']は空です
https://trinitytuts.com/restful-web-services-with-php-mysqli/
HTTPリクエストは完璧に動作します。私は、次の応答を取得:
{
"status": 1
"msg": "Your record inserted successfully"
}
私は私のウェブブラウザに直接以下のURLを入れてみました:
http://localhost/API/insert.php/name=paul&[email protected]&status=active
私が使用したときに、私は私が受け取ったのと同じ結果を期待しましたしかし、Advanced Rest Clientでは、次のエラーが発生しました。
Notice: Undefined index: name
私は、次のPHPコードを使用して変数「name」を設定しています:
$name = $_POST['name'];
私の理解では、私がブラウザにURLを貼り付ける際には、$ name変数は、$ _POST [「名前」]に設定されていないということですURLを入力するのは実際にはポストアクションではないからです。
ブラウザに投稿するようにURLにパラメータを追加することはできますか?たとえば:
http://localhost/API/insert.php/type=POST&name=paul&[email protected]&status=active
一言で言えば、私が直接WebブラウザとにURL過去のことができるようにし、HTMLフォーム経由でそれを投稿する必要はありませんしたいと思います。
insert.php
<?php
include 'conn.php';
$name = $_POST['name'];
$email = $_POST['email'];
$status = $_POST['status'];
$id = 1;
$sql = "INSERT INTO `service`.`user` (`id`, `name`, `email`, `status`) VALUES ($id, '$name', '$email', '$status');";
if ($connection->query($sql)) {
$msg = array("status" =>1 , "msg" => "Your record inserted successfully");
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($connection);
}
$json = $msg;
header('content-type: application/json');
echo json_encode($json);
@mysqli_close($conn);
?>
ポストは、ブラウザのURLを介して行われていない、の$ _GETがあるを変更することで解決されたためにこれは私のPHPコードです。 '$ _POST'を' $ _GET'に変更してください – ArtisticPhoenix
localhost/API/insert.php?name=paul&[email protected]&status=active < - 気付く? URLとパラメータの間で – Michel
を使用しますか? getのパラメータの始めには/ –