我正在尝试使用一些代码从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扩展程序并传递值,但它没有返回。而是返回其他部分。
答案 0 :(得分:3)
答案 1 :(得分:2)
根据您的屏幕截图,您将通过查询参数发送empid
,因此您需要按以下方式访问
<?php
if (isset($_GET['empid'])) {
echo $_GET['empid'];
}else{
// else part
}
另外,您需要使用GET
方法在邮递员中请求网址。
但正如您已声明要在邮递员中发送empid
到POST
,您必须通过邮递员form-data
发送邮件并将其作为$_POST["empid"];
访问。以下是截图供您参考
否则还有另一个选项,您可以通过POST
body
将row json
数据作为$rawPostData = file_get_contents('php://input');
$jsonData = json_decode($rawPostData);
发送,并将其作为
$post
和raw data
将包含<myapp>.appspot.com/_ah/login?auth=<oauth2token>
。您可以通过邮递员发送,如下面的屏幕截图所示。
答案 2 :(得分:1)
答案 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>
答案 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
。
答案 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
来访问同一个全局的GET
和POST
数据。