通过网址

时间:2016-08-26 10:54:09

标签: php mysql json post

我正在尝试使用一些代码从URL获取值,通过post方法和搜索数据库表获取该值,并从数据库获取信息并将其编码为JSON响应。

这是我的代码:

<?php
//open connection to mysql db
$connection = mysqli_connect("localhost","root","","json") or die("Error " . mysqli_error($connection));
if (isset($_POST['empid'])) {
    $k = $_POST['empid'];
    //fetch table rows from mysql db
    $sql = "select `salary` from tbl_employee where `employee_id` = $k ";
} else {
    //fetch table rows from mysql db
    $sql = "select `salary` from tbl_employee";
}
//fetch table rows from mysql db
$result = mysqli_query($connection, $sql) or die("Error in Selecting " . mysqli_error($connection));

//create an array
$emparray = array();
while($row =mysqli_fetch_assoc($result))
{
    $emparray[] = $row;
}
echo json_encode($emparray);

//close the db connection
mysqli_close($connection);
?>

我在Chrome上使用Postman扩展程序并传递值,但它没有返回。而是返回其他部分。

邮差截图 enter image description here

11 个答案:

答案 0 :(得分:3)

查看您的屏幕截图,您没有传递正文键值,而是通过了params。

enter image description here 单击Body选项卡,然后传递键和&amp;价值对。

答案 1 :(得分:2)

根据您的屏幕截图,您将通过查询参数发送empid,因此您需要按以下方式访问

<?php
if (isset($_GET['empid'])) {
    echo $_GET['empid'];
}else{
    // else part
}

另外,您需要使用GET方法在邮递员中请求网址。

但正如您已声明要在邮递员中发送empidPOST,您必须通过邮递员form-data发送邮件并将其作为$_POST["empid"];访问。以下是截图供您参考 enter image description here

否则还有另一个选项,您可以通过POST bodyrow json数据作为$rawPostData = file_get_contents('php://input'); $jsonData = json_decode($rawPostData); 发送,并将其作为

进行访问
$post

raw data将包含<myapp>.appspot.com/_ah/login?auth=<oauth2token>。您可以通过邮递员发送,如下面的屏幕截图所示。

enter image description here

答案 2 :(得分:1)

您必须将Body设置为“x-www-form-urlencoded”并添加要发布的变量

enter image description here

或试试这个SO question,已经回答了

答案 3 :(得分:1)

我在我的系统上复制了代码和数据库,以找出问题所在。为了诊断起见,我还在if (isset($_POST['empid'])) {之前添加了一些代码行:

$method = $_SERVER['REQUEST_METHOD'];
echo $method."<br/>";

应用程序文件index.php部署在webroot内的json目录中。

当我向http://localhost/json目录(POST / GET)发送任何请求时,Apache会将请求重定向为对index.php的GET请求(在我的Apache配置文件中配置)。我认为这就是你所经历的。

但是当我将请求发送到http://localhost/json/index.php时,会准确地接收并处理该请求。

因此,我想说解决方案是您需要指定php文件,并将empid参数设置为Postman中的正文的一部分(而不是作为网址的一部分)。< / p>

enter image description here

enter image description here

答案 4 :(得分:0)

I think you should also check the post if emptyif (isset($_POST['empid']) AND ($_POST['empid']) != ""). to allow php to execute the line before else.Sometimes programming becomes unpredictable.

答案 5 :(得分:0)

使用if(isset($_REQUEST['empid']))在POSTMAN中进行测试...

然后使用if(isset($_POST['empid']))直接从应用中进行测试...

看看POSTMAN https://github.com/postmanlabs/postman-app-support/issues/391

中的问题

答案 6 :(得分:0)

通过POST方式提交表单

通过表格提交的邮寄方法,能发送数据的数量或者长度。密码等敏感信息不会通过POST方法暴露在URL中,因此我们的登录表单应该使用POST方法提交数据。这就是我们如何收集PHP中POST方法提交的数据

$id=$_POST['id'];

$password=$_POST['password'];

收集GET或POST方法提交的数据

如果页面正在接收可以采用GET或POST方法中的任何一种方式的数据,那么如何收集它?在这里,我们不确定如何收集数据。所以我们会这样使用。

$id=$_REQUEST['id'];

$password=$_REQUEST['password'];

答案 7 :(得分:0)

要从 URL(query string) 获取变量的值,您需要使用$_GET$_REQUEST$_POST代表数据通过HTTP POST method发送到脚本。

所以,在你的代码中你只需要这样做:

$_REQUEST['empid']代替$_POST['empid']

POST 方法中,数据在与处理脚本的单独通信中作为包发送到服务器。通过 POST 方法发送的数据在网址中不可见。

确认邮递员Content-Type在请求标题中应为application/x-www-form-urlencoded

邮差参考文档: https://www.getpostman.com/docs/requests

答案 8 :(得分:0)

嘿,听起来你只需要向你的数据库发出GET请求。

非常欢迎您通过GET请求发送变量。

获取http://localhost/json?empid=3

然后,您可以从GET请求中获取数据$_GET['empid']

我建议使用GET请求,因为我发现您实际上并未将任何数据发布到您的服务器,而只是将您要用于查询的变量放入其中。

我确实理解GET请求的安全性较低,但在您的方案中,您的POST似乎并不想工作。所以一个不同的方法可能会让你公正。

答案 9 :(得分:0)

如果您想要网址中的值,则需要使用$_GET["empid"]代替$_POST["empid"]

答案 10 :(得分:0)

查看您要求的网址,即在GET请求中发送POST值。

http://localhost/json?empid=3

正如您在此处所看到的,url保存了empid变量,因此将其作为GET变量发送到服务器($ _GET)

使用$_GET['empid']访问此变量,同时使用$ _POST访问其他变量。

您也可以使用$_REQUEST来访问同一个全局的GETPOST数据。