Запись в БД создана, но массив с данными пар ключ-значение не вставляется — переполнение стека json

Следующие данные массива json извлекаются в php-скрипт для окончательного создания записи в базе данных MySQL:

{"address": "4 Ficticious Ave",
"city": "Miami",
"country": "United States",
"email": "[email protected]",
"first_name": "Jane",
"last_name": "Doe",
"state": "FL",
"zip_code": "03423",
"response_data":
"[{"key":"7122", "value":"37-52"},
{"key":"7123","value":"Female"},
{"key":"7124","value":"$35,000 to $50,000 USD"},
{"key":"6176","value":"Miami"},
{"key":"6177","value":"FL"},
{"key":"6179","value":"United States"}]"}

Я получил следующий php-скрипт для получения данных из массива json и создания записи в базе данных MySQL путем вставки данных. Однако заполняются все данные, кроме данных из пар ключ | значение response_data — все связанные столбцы MySQL равны нулю:

// Identify the content as json
header("Content-Type: application/json; charset=UTF-8");

// get the contents of the JSON file
$data = file_get_contents("php://input");


//this normalize routine was provided by @Elementary in
// response to my request on Stack Overflow 09052018...

//begin normalize the json in order to be properly decoded
$start=strpos($data,':',strpos($data,'response_data'));
$get=substr($data,$start+1,strrpos($data,'"')-$start);
$data=str_replace($get,trim(trim($get),'"'),$data);
//end normalize


//decode JSON data to PHP array
$content = json_decode($data, true);

//Fetch the details of customer
$Cust_Fname = $content['first_name'];
$Cust_Lname = $content['last_name'];
$Cust_Email = $content['email'];
$Street_Address = $content['address'];
$City = $content['city'];
$State = $content['state'];
$Country = $content['country'];
$Postal_Code = $content['zip_code'];

//also fetch the appended "array" of key/value fields...
$Response_AgeKey = $content['reponse_data'][0]['key'];
$Response_GenderKey = $content['reponse_data'][1]['key'];
$Response_IncomeKey = $content['reponse_data'][2]['key'];
$Response_CityKey = $content['reponse_data'][3]['key'];
$Response_StateKey = $content['reponse_data'][4]['key'];
$Response_CountryKey = $content['reponse_data'][5]['key'];
$Response_Age = $content['reponse_data'][0]['value'];
$Response_Gender = $content['reponse_data'][1]['value'];
$Response_Income = $content['reponse_data'][2]['value'];
$Response_City = $content['reponse_data'][3]['value'];
$Response_State = $content['reponse_data'][4]['value'];
$Response_Country = $content['reponse_data'][5]['value'];

База данных MySQL показывает, что запись была создана и содержит все поля данных, кроме данных, полученных из response_data. Думая, что может быть проблема с моим синтаксисом, я попытался заменить переменные response_data этим:

//try this syntax instead…
$Response_AgeKey = $content['reponse_data']['key'][0];
$Response_GenderKey = $content['reponse_data']['key'][1];
$Response_IncomeKey = $content['reponse_data']['key'][2];
$Response_CityKey = $content['reponse_data']['key'][3];
$Response_StateKey = $content['reponse_data']['key'][4];
$Response_CountryKey = $content['reponse_data']['key'][5];
$Response_Age = $content['reponse_data']['value'][0];
$Response_Gender = $content['reponse_data']['value'][1];
$Response_Income = $content['reponse_data']['value'][2];
$Response_City = $content['reponse_data']['value'][3];
$Response_State = $content['reponse_data']['value'][4];
$Response_Country = $content['reponse_data']['value'][5];

Получается тот же результат — запись создается в базе данных MySQL, но поля массива response_data не заполняют связанные столбцы MySQL. Я мог бы использовать помощь в изучении некоторых других способов идентификации и получения данных из массива response_data. Обратите внимание, что я не хочу вставлять массив response_data в MySQL как массив json — вместо этого данные из массива должны идти в связанные столбцы MySQL!

-1

Решение

Я решил проблему и теперь могу получить все данные из массива json для вставки в связанные столбцы в MySql. Решение включало извлечение подробностей ‘response_data’ в ассоциативный массив в php:

//also fetch the appended "array" of key/value fields...
$Response_Array = $content['response_data'];

Затем я просмотрел массив php, чтобы проверить переданные данные и отметить структуру:

//look at the array to verify data is fetched
var_dump($Response_Array);

Наконец, я привел значения пар ключ | значение в переменные:

//bring the values of response_data array into variables
$Response_Age = $Response_Array[0]['value'];
$Response_Gender = $Response_Array[1]['value'];
$Response_Income = $Response_Array[2]['value'];
$Response_City = $Response_Array[3]['value'];
$Response_State = $Response_Array[4]['value'];
$Response_Country = $Response_Array[5]['value'];

Теперь, когда создается запись MySQL, все данные вставляются по мере необходимости [код вставки MySQL и процедуры обработки ошибок не предусмотрены].

Спасибо всем за помощь, которая послала меня в направлении, которое мне нужно было решить.

0

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

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

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