?

Log in

No account? Create an account
Rerum cognoscere causas
 
[Most Recent Entries] [Calendar View] [Friends View]

Friday, June 7th, 2019

Time Event
4:30p
JSON data не добавляются в MySQL PHP скриптом
Я конечно кодер еще тот, но сейчас разрабатываю систему, где у меня есть Particle Electron

Он будет в компактном кейсе. Идея в том, чтобы по мобильным вышкам определять местоположение.

Я изучил документацию для particle и немного разобрался с C/C++. Написал для платы простенькую прошивку, которая периодически посылает на сервер Particle Cloud данные о мобильной вышке (там на самом деле 5 идентификаторов: MCC - код страны, MNC - код оператора, и три индентификатора самой вышки - LAC, CI, BSIC). Данные эти Particle Cloud не хранит, а посылает в виде JSON файла на мой сервер. Сервер умещается на Raspberry Pi 3 дома в углу стола. Кстати, кому интересно как это сделать, потом напишу (спойлер - фича в том, чтобы подружиться с каким-то сервисом dynamic IP, потому что у вас в локальке за роутером конечно нет глобального да еще и фиксированного IP, но dynamic IP это решение. Я использую Dynu.net)

Данные JSON выглядят примерно так


На сервере у меня LAMP стэк:
Ubuntu Server 18.04 + Apache2 + MySQL + PHP.

База данных MySQL создана. В ней просто будут добавляться записи из key: value пар "MCC":"value1", "MNC": "value2".

Проблема сейчас с PHP скриптом, который я тут написал, прочитав первую в своей жизни книжку по PHP/MySQL. Particle Cloud посылает JSON данные на мой php скрипт. Как вы видите ниже, PHP скрипт должен парсировать JSON, потом создавать MySQL query, вынимать нужные key-value пары и вставлять значения в нужные поля моей базы данных.

<?php

$json=$_POST;
$data=json_decode($json, true);

$hostname="localhost";
$username="user";
$password="password";
$db="My_DB";

$dbconnect=mysqli_connect($hostname, $username, $password, $db);

if ($dbconnect->connect_error) {
    die("Database connection failed:" . $dbconnect->connect_error);
}

$mcc=$data["MCC"];
$mnc=$data["MNC"];
$lac=$data["LAC"];

$query="INSERT INTO `My_Data_Table` (`mcc`, `mnc`, `lac`)
                            VALUE ('$mcc', '$mnc', '$lac')";

if (!mysqli_query($dbconnect, $query)){
    die('An error occurred.');
}else{
    echo "Success!";
}

mysqli_close($dbconnect);

?>




Но пока скрипт ничего не добавляет. Тестирую это из терминала ubuntu server'а. Curl с verbose ответом берет JSON файл с данными и посылает его на PHP скрипт. Curl такой:

curl -v -X POST --header 'Content-Type: application/json; charset=UTF-8' --data my_file.json http://localhost/my_php_file.php

Получаю общую инфу от выполнения curl, мол данные то посылаются, но Apache выдает 500 Internal Server Error (общая ошибка, где она закралась - хз)

Trying 127.0.0.1
Connected to localhost port 80
POST /php-parser.php HTTP/1.1
HOST:localhost
User-Agent: curl/7.58.0
Accept: */*
Content-Type: application/json; charset=UTF-8
Content-Length: 210

*upload completely sent off: 210 of 210 bytes
*HTTP/1.0 assume close after body
HTTP/1.0 500 Internal Server Error
Server: Apache/2.4.29 (Ubuntu)
Content-Length:0
Connection: close
Content-Type: text/html; charset=UTF-8



На stackoverflow в архивах ничего не нашел. Запостил вопрос здесь. Модераторы пост пометили [duplicated], потому что видимо подумали, что у меня в php скрипте путаница с backticks, single or double quotes. Сказали, мол см. сюда. Посмотрел. Применил. Всё та же ошибка.

Пока не знаю, кто поможет. Нужны спецы в PHP/MySQL/Backend. Ищу на upwork. Если у кого идеи и предложения с интересом выслушаю.

<< Previous Day 2019/06/07
[Calendar]
Next Day >>
About LiveJournal.com