• PHP存储blob示例(转)


    原文:http://www.mysqltutorial.org/php-mysql-blob/

    <?php
    
    /*
    CREATE TABLE files (
        id   INT           AUTO_INCREMENT PRIMARY KEY,
        mime VARCHAR (255) NOT NULL,
        data BLOB          NOT NULL
    );
    */
    
    class BobDemo {
    
        const DB_HOST = 'localhost';
        const DB_NAME = 'weiphp3';
        const DB_USER = 'root';
        const DB_PASSWORD = '123';
    
        /**
         * PDO instance
         * @var PDO 
         */
        private $pdo = null;
    
        /**
         * Open the database connection
         */
        public function __construct() {
            // open database connection
            $conStr = sprintf("mysql:host=%s;dbname=%s;charset=utf8", self::DB_HOST, self::DB_NAME);
    
            try {
                $this->pdo = new PDO($conStr, self::DB_USER, self::DB_PASSWORD);
                //for prior PHP 5.3.6
                //$conn->exec("set names utf8");
            } catch (PDOException $e) {
                echo $e->getMessage();
            }
        }
    
        /**
         * insert blob into the files table
         * @param string $filePath
         * @param string $mime mimetype
         * @return bool
         */
        public function insertBlob($filePath, $mime) {
            $blob = fopen($filePath, 'rb');
    
            $sql = "INSERT INTO files(mime,data) VALUES(:mime,:data)";
            $stmt = $this->pdo->prepare($sql);
    
            $stmt->bindParam(':mime', $mime);
            $stmt->bindParam(':data', $blob, PDO::PARAM_LOB);
    
            return $stmt->execute();
        }
    
        /**
         * update the files table with the new blob from the file specified
         * by the filepath
         * @param int $id
         * @param string $filePath
         * @param string $mime
         * @return bool
         */
        function updateBlob($id, $filePath, $mime) {
    
            $blob = fopen($filePath, 'rb');
    
            $sql = "UPDATE files
                    SET mime = :mime,
                        data = :data
                    WHERE id = :id;";
    
            $stmt = $this->pdo->prepare($sql);
    
            $stmt->bindParam(':mime', $mime);
            $stmt->bindParam(':data', $blob, PDO::PARAM_LOB);
            $stmt->bindParam(':id', $id);
    
            return $stmt->execute();
        }
    
        /**
         * select data from the the files
         * @param int $id
         * @return array contains mime type and BLOB data
         */
        public function selectBlob($id) {
    
            $sql = "SELECT mime,
                            data
                       FROM files
                      WHERE id = :id;";
    
            $stmt = $this->pdo->prepare($sql);
            $stmt->execute(array(":id" => $id));
            $stmt->bindColumn(1, $mime);
            $stmt->bindColumn(2, $data, PDO::PARAM_LOB);
    
            $stmt->fetch(PDO::FETCH_BOUND);
    
            return array("mime" => $mime,
                "data" => $data);
        }
    
        /**
         * close the database connection
         */
        public function __destruct() {
            // close the database connection
            $this->pdo = null;
        }
    
    }
    
    $blobObj = new BobDemo();
    
    // test insert gif image
    $blobObj->insertBlob('images/php-mysql-blob.gif',"image/gif");
    $a = $blobObj->selectBlob(1);
    header("Content-Type:" . $a['mime']);
    echo $a['data'];
    // test insert pdf
    //$blobObj->insertBlob('pdf/php-mysql-blob.pdf',"application/pdf");
    //$a = $blobObj->selectBlob(2);
    // save it to the pdf file
    //file_put_contents("pdf/output.pdf", $a['data']);
    // $a = $blobObj->selectBlob(2);
    // header("Content-Type:" . $a['mime']);
    // echo $a['data'];
    // replace the PDF by gif file
    
    
    
    
    // $blobObj->updateBlob(2, 'images/php-mysql-blob.gif', "image/gif");
    
    // $a = $blobObj->selectBlob(2);
    // header("Content-Type:" . $a['mime']);
    // echo $a['data'];
  • 相关阅读:
    kernel pwn 入门环境搭建
    linux下sh脚本/bin/bash^M问题解决
    Linux下的C#连接Mysql数据库
    使用docker Hub
    使用ajax+php+mysql实现数据库定时刷新
    docker 安装LAMP环境
    解决Mysql错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
    php实现socket简单的例子
    一次mysql调优过程
    一次mysql主从同步问题及解决过程
  • 原文地址:https://www.cnblogs.com/GarfieldTom/p/6214893.html
Copyright © 2020-2023  润新知