sql >> データベース >  >> RDS >> Mysql

longblobのMySQLデータベースからの空のPHP出力

    このようにキャストすることで、Base64行を出力する元の関数を取得することができました:

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

    これによりBase64文字列を受信できるようになりましたが、不要な文字が含まれていました。不要な文字はJSON_ENCODEが原因でした。以下は私がそれを修正するために使用したものです。

    基本的に、1。追加された文字を削除し、2。JSON_UNESCAPED_SLASHESでエスケープ文字を出力しないようにJSON_ENCODEに指示します。

    関数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;
    }
    

    そして、Apiスクリプトで、

    からのリターンを変更しました
    echo json_encode($resultArray);
    

    echo json_encode($resultArray, JSON_UNESCAPED_SLASHES);
    

    今ではすべてが素晴らしい働きをします。これはベストプラクティスですか?私はわかりません。 base64の保存はおそらくそうではないと確信しています...




    1. MySQLJDBC08001データベース接続エラーを修正する方法

    2. SQL Server全文検索のエスケープ文字?

    3. 値を設定するためのPostgresql挿入トリガー

    4. PostgreSQLでINSERTまたはUPDATEの影響を受けるレコードの数を取得します