Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Puste wyjście PHP z bazy danych MySQL dla longbloba

Udało mi się uzyskać oryginalną funkcję do wyprowadzania linii Base64 przez rzutowanie jako takie:

    $stmt = $this->con->prepare("SELECT owner, pet_name, last_seen, contact, description, CAST(photo as CHAR(1000000) CHARACTER SET utf8) as photo, location FROM Pets");

Chociaż umożliwiło to odebranie ciągu Base64, nadal zawierało niechciane znaki. Niechciane znaki zostały spowodowane przez JSON_ENCODE. Poniżej jest to, co użyłem, aby to naprawić.

Zasadniczo 1. usuń dodane znaki i 2. powiedz JSON_ENCODE, aby nie drukował znaków ucieczki za pomocą JSON_UNESCAPED_SLASHES.

Dla funkcji getReports()

function getReports() {
    $stmt = $this->con->prepare("SELECT owner, pet_name, last_seen, contact, description, CAST(photo as CHAR(1000000) CHARACTER SET utf8) as photo, location FROM Pets");
    $stmt->execute();
    $stmt->bind_result($owner, $pet_name, $last_seen, $contact, $description, $photo, $location);

    $reports = array();

    while($stmt->fetch()) {
        $report  = array();
        $report['owner'] = $owner;
        $report['pet_name'] = $pet_name;
        $report['last_seen'] = $last_seen;
        $report['contact'] = $contact;
        $report['description'] = $description;
        $photo = str_replace("\n","",$photo);
        $photo = str_replace("\\/","/", $photo);
        $photo = stripcslashes($photo);
        $report['photo'] = $photo;
        $report['location'] = $location;

        array_push($reports, $report);
    }

    return $reports;
}

A w skrypcie Api zmieniono zwrot z

echo json_encode($resultArray);

do

echo json_encode($resultArray, JSON_UNESCAPED_SLASHES);

Teraz wszystko działa fantastycznie. Czy to najlepsza praktyka? Nie jestem pewien. Jestem pewien, że przechowywanie base64 prawdopodobnie nie jest...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Proces zabijania MySQL to użytkownik nie ma wystarczającej liczby punktów PHP

  2. Jak uzyskać dostęp do folderu var i folderu bazy danych MySQL z plikami .frm, .MYD i .MYI każdej tabeli w CPanel?

  3. InnoDB:Wstawianie zbiorcze za pomocą transakcji CZY łączyć wiele zapytań?

  4. Błąd (kod błędu:1175) podczas wykonywania polecenia aktualizacji na stole przy użyciu MySQL Workbench 5.2

  5. Tworzenie zmiennej tablicowej w MySQL