sql >> Database teknologi >  >> RDS >> Mysql

Tøm PHP-output fra MySQL-database for en longblob

Det lykkedes mig at få den originale funktion til at outputte Base64-linjen ved at caste 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");

Selvom dette gjorde det muligt at modtage Base64-strengen, inkluderede den stadig de uønskede tegn. De uønskede tegn var forårsaget af JSON_ENCODE. Nedenfor er, hvad jeg brugte til at rette det.

Grundlæggende, 1. fjern de tilføjede tegn og 2. bed JSON_ENCODE om ikke at udskrive escape-tegnene med JSON_UNESCAPED_SLASHES.

For 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;
}

Og i Api-scriptet, ændrede returneringen fra

echo json_encode($resultArray);

til

echo json_encode($resultArray, JSON_UNESCAPED_SLASHES);

Nu fungerer alt fantastisk. Er dette bedste praksis? Jeg er ikke sikker. Jeg er sikker på, at lagring af base64 sandsynligvis ikke er...




  1. Hvorfor er udførelsestiden for oracle-lagrede procedurer stærkt forøget afhængigt af, hvordan den udføres?

  2. Hvordan erklærer og bruger jeg variabler i PL/SQL, som jeg gør i T-SQL?

  3. Hvordan gemmer man adgangskoder sikkert i databasen?

  4. Hvordan medtager man nul/0 resultater i COUNT aggregat?