2012-05-30 48 views
0

我想在25mb左右插入一個文件。在我的服務器max_allowed_pa​​cket 的值是16mb,我無法更改服務器配置。我怎麼能 插入一個文件到mysql blob?我在我的本地 主機中使用了此代碼。它工作正常。但是這不適用於我的在線服務器。插入長BLOB

$mysqli = new mysqli("localhost", "root", "", "test"); 

$stmt = $mysqli->prepare("INSERT INTO FILES_DATA (FileData) VALUES (?)"); 
$null = NULL; 
$stmt->bind_param("b", $null); 
$fp = fopen("Wildlife.wmv", "r"); 

echo('<br>fp='.$fp); 
while (!feof($fp)) { 
    $stmt->send_long_data(0, fread($fp, 8192)); 
} 
fclose($fp); 
$stmt->execute(); 

SQL創建表:提前

CREATE TABLE IF NOT EXISTS 'files_data' ( 
    'Id' int(11) NOT NULL AUTO_INCREMENT, 
    'FileData' longblob, 
    PRIMARY KEY ('Id') 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; 

感謝。

+1

這裏真正的問題是爲什麼你要插入一個25MB的文件到數據庫。使用文件系統並痛斥數據庫中文件的路徑。 –

回答

0

解決方法 - 使用一些BLOB字段來存儲文件。將你的25MB文件拆分爲兩個字節的數組:16MB + 9MB,並用十六進制表示法將它們插入表格中。 -

INSERT INTO table files(id, data1, data2) VALUES(1, 0x616263..., 0x78797A...) 
+0

我已經使用了方法 - 拆分文件並插入多行,我沒有使用過,我會嘗試。謝謝。 – user1425252