it-swarm.com.ru

Получить значения через метод записи из URL

Я пытаюсь получить код из 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);
?>

Я использовал расширение Postman в Chrome и передаю значения, но оно не возвращается. Вместо этого он возвращает остальную часть.

Скриншот почтальона  enter image description here

5
Melvin

Согласно скриншоту, вы отправляете свой empid через параметр запроса, поэтому вам нужно получить к нему доступ следующим образом

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

также для этого вам нужно запросить URL в Почтальоне, используя метод GET.

Но так как вы заявили, что хотите отправить empid через POST в почтальоне, вы должны отправить его через form-data в Postman и получить доступ к нему как $_POST["empid"];. ниже приведен скриншот для вашей справки  enter image description here

еще есть другая опция, где вы можете отправлять данные POST через body как row json и получать к ним доступ как

$rawPostData = file_get_contents('php://input');
$jsonData = json_decode($rawPostData);

и $post будет содержать raw data. И вы можете отправить его через почтальона, как на следующем скриншоте.

 enter image description here

2
Nikhil

Глядя на снимок экрана, вы не передали значения ключей тела, вместо этого вы передали параметры.

 enter image description here Нажмите на вкладку «Тело», а затем передайте пару ключ/значение.

3
mukund

Вы должны установить для тела значение "x-www-form-urlencoded" и добавить переменные для публикации

 enter image description here

Или попробуйте этот SO вопрос , на него уже дан ответ 

1
Rinto George

Я скопировал код и базу данных в моей системе, чтобы выяснить проблему. Я также добавил несколько строк кода перед if (isset($_POST['empid'])) { для диагностики:

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

Файл приложения index.php развернут в каталоге json внутри webroot.

Когда я отправляю любой запрос в каталог http: // localhost/json (либо POST/GET), Apache перенаправляет запрос как запрос GET на index.php (как настроено в моем конфигурационном файле Apache). Я полагаю, это то, что вы испытываете. 

Но когда я отправляю запрос в http: //localhost/json/index.php , запрос точно получен и обработан.

Поэтому я бы сказал, что решение состоит в том, что вам нужно указать файл php, а также установить параметр empid как часть тела в Postman (а не как часть url).

 enter image description here

 enter image description here

1
Olantobi

Я думаю, что вы также должны проверить сообщение, если emptyif (isset($_POST['empid']) AND ($_POST['empid']) != ""). чтобы позволить php выполнить строку до того, как программирование else.Sometimes станет непредсказуемым.

0
ocnet

Эй, похоже, вам просто нужно сделать запрос GET к вашей БД.

Вы также можете отправить переменные через запрос GET.

GET http: // localhost/json? Empid = 3

Затем вы можете получить данные из вашего запроса GET следующим образом: $_GET['empid']

Я предлагаю запрос GET, потому что я вижу, что вы на самом деле не публикуете какие-либо данные на своем сервере, а просто передаете переменную, в которой вы хотите использовать для запроса.

Я понимаю, что запросы GET менее безопасны, но в вашем сценарии ваш POST просто не хочет работать. Таким образом, другой курс может сделать вас справедливым.

0
Sweet Chilly Philly

Если вы хотите получить значение из URL, вам нужно использовать $_GET["empid"] вместо $_POST["empid"]

0
Carlos Santos

Просматривая запрашиваемый URL-адрес, вы отправляете значение GET в своем запросе POST.

http://localhost/json?empid=3

Как вы можете видеть здесь, URL содержит переменную empid, поэтому он отправляется на сервер как переменная GET ($ _GET)

Используйте $_GET['empid'] для доступа к этой переменной, а $ _POST для доступа к другим переменным.

Вы также можете использовать $_REQUEST для доступа к данным GET и POST одним и тем же глобалом.

0
Flip Vernooij

Отправка формы методом POST

Почтовым методом отправки формы мы можем отправить номер или длину данных. Конфиденциальная информация, такая как пароль, не раскрывается в URL методом POST, поэтому в наших формах входа в систему мы должны использовать метод POST для отправки данных. Вот как мы собираем данные, представленные методом POST в PHP 

$id=$_POST['id'];

$password=$_POST['password'];

Сбор данных, представленных с помощью метода GET или POST

Если страница получает данные, которые могут быть получены любым из методов GET или POST, то как их собрать? Здесь мы не уверены, как собирать данные. Так что будем использовать вот так.

$id=$_REQUEST['id'];

$password=$_REQUEST['password'];

0
Vaibhav Walke

Чтобы получить значение переменной из функции URL(query string), вам необходимо использовать $_GET или $_REQUEST.$_POST, представляющие данные, которые отправляются в сценарий через HTTP POST method.

Итак, в вашем коде вам просто нужно сделать это:

$_REQUEST['empid'] вместо $_POST['empid']

В методе POST данные отправляются на сервер в виде пакета в отдельном сообщении со сценарием обработки. Данные, отправленные с помощью метода POST, не будут видны в URL.

Убедитесь, что в почтальоне Content-Type должен быть application/x-www-form-urlencoded в заголовке запроса.

Справочный документ почтальона:https://www.getpostman.com/docs/requests

0
Rohit Jindal

использовать if(isset($_REQUEST['empid'])) для проверки в POSTMAN ...

Затем используйте if(isset($_POST['empid'])) для тестирования непосредственно из приложения ...

посмотрите проблему в POSTMAN https://github.com/postmanlabs/postman-app-support/issues/391

0
safin chacko