Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Đầu ra PHP trống từ cơ sở dữ liệu MySQL cho một longblob

Tôi đã quản lý để có được chức năng ban đầu để xuất ra dòng Base64 bằng cách truyền như vậy:

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

Mặc dù điều này cho phép nhận chuỗi Base64, nó vẫn bao gồm các ký tự không mong muốn. Các ký tự không mong muốn do JSON_ENCODE gây ra. Dưới đây là những gì tôi đã sử dụng để sửa nó.

Về cơ bản, 1. xóa các ký tự đã thêm và 2. yêu cầu JSON_ENCODE không in các ký tự thoát với JSON_UNESCAPED_SLASHES.

Đối với hàm 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;
}

Và trong tập lệnh Api, đã thay đổi kết quả trả về từ

echo json_encode($resultArray);

đến

echo json_encode($resultArray, JSON_UNESCAPED_SLASHES);

Bây giờ mọi thứ hoạt động tuyệt vời. Đây có phải là phương pháp hay nhất không? Tôi không chắc. Tôi chắc chắn lưu trữ base64 có lẽ không ...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng MySQL của Schrödingers:tồn tại, nhưng nó không

  2. Sự khác biệt giữa tinyint, smallint, mediumint, bigint và int trong MySQL là gì?

  3. AVG + Tham gia bên trong

  4. Nhận chỉ mục của các hàng được chèn từ cơ sở dữ liệu MySQL

  5. Biến do người dùng xác định là bí danh MySQL v8.0 không hoạt động