Получение данных BLOB-объектов из JSON в таблицу MySQL с использованием PHP - PullRequest
0 голосов
/ 23 марта 2020

У меня есть проблема, я надеюсь, что кто-то может помочь. Я собираю некоторую информацию о формах Cognito. Прямо сейчас это - основная информация, но добавит больше. Это форма для студентов, чтобы отправить свое имя, контактную информацию и резюме. Форма Cognito позволяет загружать файл do c или pdf. An отправляет данные в виде JSON данных в промежуточный файл php (ниже), который анализирует их и вставляет в mysql таблицу 'студентов'. ​​

Приведенный ниже код работает, и я могу получить данные и он уходит в таблицу. В поле pdf резюме указано BLOB -5B, так что я знаю, что что-то там произошло. Проблема в том, что я не могу читать это. Я подозреваю, что не принимаю правильную часть данных JSON.

Связываю ли я весь объект Resume $contact->{'Resume'}? или это должно быть $contact->{'Resume'}-->{'somethingelse'}?

Моя структура для поля большого блога резюме - mediumblob null - Да по умолчанию null

<?php  
    $json = file_get_contents("php://input");  

    if (empty($json)) {  
        echo "No data payload";  
        die;  
    }  

$host="db5000312294.hosting-data.io";
$user="xxx";
$password="xxx";
$dbname="xxx";

    $contact = json_decode($json);  
    if ($contact == null && json_last_error() !== JSON_ERROR_NONE) {  
        echo "Error reading JSON: " . json_last_error();  
    }  

    $mysqli = new mysqli("$host", "$user", "$password","$dbname");  
    if ($mysqli->connect_errno) {  
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;  
        die;  
    }  

    $query = "insert into students (fname,lname,phone,email,resume,position) values (?,?,?,?,?,?)";  
    if (!($stmt = $mysqli->prepare($query))) {  
        echo "Prepare failed: (" . $stmt->errno . ") " . $stmt->error;  
        die;  
    }  

    if (!($stmt->bind_param("ssssss",   
        $contact->{'Name'}->{'First'},   
        $contact->{'Name'}->{'Last'},  
        $contact->{'Phone'},  
        $contact->{'Email'},  
    $contact->{'Resume'}, 
        $contact->{'WhatPositionAreYouApplyingFor'}))) {  

        echo "Bind failed: (" . $stmt->errno . ") " . $stmt->error;  
    }  

    if (!($stmt->execute())) {  
        echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;      
    }  
?>
This is what the JSON section looks like
    "Resume": [
        {
          "ContentType": "application/pdf",
          "Id": "F-qIr7WOAa2Yeh9ZnzPcvspk",
          "IsEncrypted": false,
          "Name": "Principal etfs.pdf",
          "Size": 188451,
          "File": "https://services.cognitoforms.com/fa/SVh77OiVmEK-J1ZtGNTRAQ?token=RUN_uR__rdZy_FTNnav8GGP6uEHoT7vYR2Yo9uccQxyfX4sIDMcqaOw52U27pIggHrjsfuQK0tBXYiiYqdPDGw$$"
        }
      ],

Сохранение PDF вне базы данных и сохранение только ссылки не вариант, так как он загружен на Cognito и JSON передан мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...