VBA (Access 2013) HTTP POST не передает аргументы

Я пытаюсь заставить свою базу данных Access, написанную на VBA, взаимодействовать с базой данных MySQL на моем клиентском веб-сайте через набор веб-служб PHP, которые я написал. Мне удалось получить доступ к базе данных Access для получения данных из базы данных MySQL, но я не могу заставить ее что-либо публиковать. Я сузил проблему до того факта, что мой HTTP-запрос не отправляет аргументы, которые я ему назначил.

Вот несколько вопросов и сайтов, на которые я уже смотрел. Они не были полезны, потому что большинство не имели дело с PHP и вместо этого смотрели непосредственно на веб-сайты или имели дело с GET, а не с POST.

Http Post не публикует данные
Excel VBA HTTP запрос загрузки данных из Yahoo финансов
HTTP-запрос VBA HTTP — файлы cookie с двоеточиями
Передать параметры в VBA HTTP Post Request
Выполнить скрытый http-запрос от vba
Как я могу отправить HTTP-запрос POST на сервер из Excel, используя VBA?
http://www.tushar-mehta.com/publish_train/xl_vba_cases/vba_web_pages_services/
https://stackoverflow.com/questions/29190759/vba-oauth2-authentication-http-get-request
VBA ServerXMLHTTP https запрос с самозаверяющим сертификатом
Как я могу отправить HTTP-запрос POST на сервер из Excel, используя VBA?
Отправка http-запросов с помощью VBA из Word Отправка http-запросов с помощью VBA из Word

Мой код для VBA:

Dim strJSONEncodedJob As String
strJSONEncodedJob = "[{""ExpenseID"":""" & astrExpenseIDs(intI) & "}]"URL = "I removed the URL when posting"objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "Content-Type", "application/json"objHTTP.send (strJSONEncodedJob)
strResponse = objHTTP.responseText
MsgBox strResponse

И мой код PHP:

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

$json = file_get_contents('php://input');
$data = json_decode($json, true);

$stmt = $conn->prepare("DELETE FROM tblExpenses WHERE ExpenseID=?");
$txtExpenseID = $data['ExpenseID'];
$stmt->bind_param("i", $txtExpenseID);
$stmt->execute();

echo '{"result" : "success"}';$stmt->close();
$conn->close();

Как и ожидалось, я получаю заявление об успехе в виде msgbox в VBA, однако запись не удаляется из базы данных MySQL.

у кого-нибудь есть решение?

Заранее спасибо.

Обновить
Когда я передаю $ json, я получаю строку в кодировке JSON, что означает, что аргументы передаются. Однако, когда я отображаю $ data [‘ExpenseID’], я получаю пустое сообщение.

0

Решение

Ваш json-кодированный объект — это массив, содержащий один объект, поэтому, если вы хотите получить свойства этого объекта, вам сначала нужно проиндексировать его из массива. Что-то вроде

$txtExpenseID = $data[0]['ExpenseID'];

(опять же, я не PHP человек, поэтому просто угадываю синтаксис)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]