我有MySQL 5.1.65在共享主機帳戶,我插入圖像插入到我的圖像表(InnoDB)有MEDIUMBLOB列,我想存儲圖像數據時遇到麻煩。MySQL MEDIUMBLOB總是有相同的大小
CREATE TABLE IF NOT EXISTS `images` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`description` varchar(160) DEFAULT NULL,
`image` mediumblob,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我使用PDO從PHP 5.2.17連接到數據庫。我嘗試在我的連接中設置 PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
,因爲它在SO和網絡上的一些類似(或相同)問題的答案中被建議,但它沒有解決問題。 我也在MySQL配置中檢查了最大允許數據包,它被設置爲16,777,216,這應該足夠了,因爲我不允許上傳大於5MB的圖像。
我不知道它是否相關,但我在事務中插入數據,在該事務中,我也向其他表中插入了多個數據。
$image_params = array(
"description" => $data->description,
"image" => $image->getBinary() // Basicaly does file_get_contents() and returns
);
$image_statement = $pdo->prepare(
"INSERT INTO images (description, image)
VALUES(:description, :image)"
);
$pdo->beginTransaction();
$image_statement->execute($image_params);
$some_other_statement->execute($params);
$pdo->commit()
在phpMyAdmin當我瀏覽圖片表格,圖像欄始終顯示[BLOB - 15B],當我訪問它,我得到一個包含.bin文件 「資源ID#[ID]」,其中[ID]是的ID一個圖像。
謝謝你,維克多