sql >> Databasteknik >  >> RDS >> Mysql

Tom PHP-utdata från MySQL-databas för en longblob

Jag lyckades få den ursprungliga funktionen att mata ut Base64-linjen genom att casta som sådan:

    $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");

Även om detta gjorde det möjligt för Base64-strängen att tas emot, inkluderade den fortfarande de oönskade tecknen. De oönskade tecknen orsakades av JSON_ENCODE. Nedan är vad jag använde för att fixa det.

I princip, 1. ta bort de tillagda tecknen och 2. säg till JSON_ENCODE att inte skriva ut escape-tecken med JSON_UNESCAPED_SLASHES.

För funktionen 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;
}

Och i Api-skriptet, ändrade returen från

echo json_encode($resultArray);

till

echo json_encode($resultArray, JSON_UNESCAPED_SLASHES);

Nu fungerar allt fantastiskt. Är detta bästa praxis? Jag är inte säker. Jag är säker på att lagring av base64 förmodligen inte är...




  1. Skapa en studentdatabas med Microsoft Access

  2. Maximalt antal kolumner/värden du kan INFOGA I en tabell - mysql

  3. Migrerar alla till molnet?

  4. Vad är DATALENGTH()-ekvivalenten i MySQL?