BLOB long data?

Ticketa

Registered
Много странно (поне за мен) имам функция, чрез която добавям файлове (снимки = аватари) в blob към базата данни, обаче при опит да добавя снимката към таблицата в базата получавам грешка:

Fatal error​

Uncaught exception: 'PDOException'

Message: 'SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'data' at row 1'

Stack trace:

SQL:
CREATE TABLE files (
    id   INT           AUTO_INCREMENT PRIMARY KEY,
    mime VARCHAR (255) NOT NULL,
    data BLOB          NOT NULL
);

Код:
/**
     * 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)';
        $db = static::getDB();
        $stmt = $db->prepare($sql);
        $stmt->bindParam(':mime', $mime);
        $stmt->bindParam(':data', $blob, PDO::PARAM_LOB);
        return $stmt->execute();
    }


EDIT: Коригирах типа на BLOB от BLOB на longblob и всичко е прекрасно! Благодаря все пак :)
 
Тамън щях да ти напиша същото. Надявам се, че проверяваш файла преди да го подадеш за качване към този метод. Би било хубаво освен типът да си запаметяваш оригиналното име на файла с неговото разширение, големина на файла, дата на създаване и последно обновен. След време може да ти се наложи да правиш някои допълнителни валидации в базата и ще ти е по-удобно да сортираш.
 
Да, разбира се че правя. Иначе може някоя изненада на черупка да влезе хахаахаха

Благодаря за съветите имам ги предвид.
 

Back
Горе