在mysql數(shù)據(jù)庫(kù)中,我們通常將圖片轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)并存儲(chǔ)在數(shù)據(jù)庫(kù)中。接下來(lái)我們將講解如何將圖片轉(zhuǎn)換為二進(jìn)制數(shù)據(jù),以及如何在mysql中存儲(chǔ)和檢索它們。
首先,我們需要使用PHP中的file_get_contents函數(shù)來(lái)讀取圖片文件。例如,我們可以使用以下代碼讀取名為image.jpg的圖片文件:
$img = file_get_contents('image.jpg');
接下來(lái),我們需要使用mysql中的BLOB數(shù)據(jù)類型來(lái)存儲(chǔ)二進(jìn)制數(shù)據(jù)。我們可以使用以下代碼創(chuàng)建一個(gè)BLOB類型的表:
CREATE TABLE images ( id INT(11) NOT NULL AUTO_INCREMENT, data BLOB, PRIMARY KEY(id) );
現(xiàn)在,我們將把圖片數(shù)據(jù)插入到表中。我們可以使用以下代碼將image.jpg中的二進(jìn)制數(shù)據(jù)插入至images表中:
$mysqli = new mysqli('localhost', 'username', 'password', 'database'); $stmt = $mysqli->prepare("INSERT INTO images (data) VALUES (?)"); $stmt->bind_param("b", $img); $stmt->execute(); $stmt->close();
我們使用了mysqli來(lái)連接數(shù)據(jù)庫(kù),并使用了prepare語(yǔ)句以避免SQL注入。接下來(lái),我們使用bind_param函數(shù)將二進(jìn)制數(shù)據(jù)綁定到SQL語(yǔ)句中的占位符。
最后,我們可以使用以下代碼來(lái)檢索并顯示圖像:
$id = 1; //圖片ID $result = $mysqli->query("SELECT data FROM images WHERE id = $id"); $row = $result->fetch_assoc(); header("Content-Type: image/jpeg"); echo $row['data'];
我們使用了$id來(lái)指定要檢索的圖像,并使用了Content-Type頭來(lái)指定輸出的內(nèi)容類型。最后,我們使用echo語(yǔ)句輸出二進(jìn)制數(shù)據(jù)。