#php #mysql #json
#php #mysql #json
Вопрос:
Я пытаюсь запустить простой PHP-код, который извлекает файл в формате JSON и вставляет в базу данных.
Код возвращает, что новая запись была создана успешно. Однако, когда я смотрю на базу данных, каждое значение равно 0.
//read the json file contents
$jsondata = file_get_contents('http://tally.fit/empdetails.json');
//convert json object to php associative array
$data = json_decode($jsondata, true);
//get the employee details
$id = $data['empid'];
$name = $data['personal']['name'];
$gender = $data['personal']['gender'];
$age = $data['personal']['age'];
$streetaddress = $data['personal']['address']['streetaddress'];
$city = $data['personal']['address']['city'];
$state = $data['personal']['address']['state'];
$postalcode = $data['personal']['address']['postalcode'];
$designation = $data['profile']['designation'];
$department = $data['profile']['department'];
//insert into mysql table
$sql = "INSERT INTO tbl_emp(empid, empname, gender, age, streetaddress, city, state, postalcode, designation, department)
VALUES('$id', '$name', '$gender', '$age', '$streetaddress', '$city', '$state', '$postalcode', '$designation', '$department')";
JSON:
{
"emp": "SJ011MS",
"personal": {
"name": "Smith Jones",
"gender": "male",
"age": "28",
"address": {
"streetaddress": "7 24th Street",
"city": "new york",
"state": "NY",
"postalcode": "10038"
}
},
"profile": {
"designation": "Deputy General",
"department": "Finance"
}
}
Комментарии:
1. Вы пытались
echo $id;
посмотреть, что содержится в переменных? Дает ли это значение null или фактический идентификатор? Это может помочь вам в отладке.2. Если ничего другого — ваш JSON имеет
emp
для идентификатора сотрудника, и вы используетеempid
3. Вы уязвимы для атак с использованием SQL-инъекций .
4. Я исправил JSON, затем добавил echo, и я могу видеть, что каждое значение проходит просто отлично.. Что сейчас странно, так это то, что в БД обновляются не все поля, а только некоторые
Ответ №1:
Ваш JSON недопустим. Смотрите ниже.
"profile":{
"designation":"Deputy General",
"department":"Finance", //Remove Comma here for valid JSON
}
Вы можете проверить это в будущем, используя var_dump()
on your json_decode()
, а затем проверить свою строку JSON с помощью инструмента проверки JSON.
Ответ №2:
Эта строка JSON, возвращаемая сервером, недопустима. Невозможно проанализировать с помощью json_decode.