MySQL是一種常用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。其中,blob(二進(jìn)制大對象)是一種“大數(shù)據(jù)”類型,可以用來存儲一些二進(jìn)制文件,例如圖片、音頻、視頻等等。
在MySQL中,我們可以使用BLOB類型來存儲二進(jìn)制數(shù)據(jù)。BLOB類型有四種:TINYBLOB、BLOB、MEDIUMBLOB、LONG BLOB,分別能夠存儲不同大小的二進(jìn)制對象。其它幾乎與VARCHAR或 TEXT類型一樣,不同的是其存儲大小是可伸縮的。
下面是一個創(chuàng)建BLOB類型的表格的示例代碼:
CREATE TABLE `file` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `data` blob NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
需要注意的點(diǎn)是:
- 使用BLOB類型時需要指定NOT NULL屬性。
- 在創(chuàng)建表格時要注意選擇CHARSET。
我們可以通過如下方法向file表格中插入二進(jìn)制數(shù)據(jù):
$insert_sql = "INSERT INTO file (id, name, data) VALUES (?, ?, ?)"; $stmt = $mysqli->prepare($insert_sql); $id = 1; $name = "file.jpg"; $data = file_get_contents("file_path.jpg"); $stmt->bind_param("iss", $id, $name, $data); $res = $stmt->execute();
其中,文件路徑可通過使用file_get_contents()函數(shù)進(jìn)行讀取,例如上述代碼中使用的是“file_path.jpg”。
在實(shí)際使用時,我們可以通過二進(jìn)制數(shù)據(jù)的大小來選擇BLOB類型的幾種類型,從而使得存儲空間最小化,同時保證數(shù)據(jù)的安全性。