PHP: Przechowywanie JPG w bazie MySQL

Zakładając, że w bazie MySQL mamy tabelę ‘gallery’ i w niej pole ‘data’ typu BLOB, w którym będziemy trzymać obrazek, dodawanie i pobieranie obrazka z bazy może wyglądać tak:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
// insert image
function insertImage($file) {
	$f = fopen("$file", "rb");
	$img = addslashes(fread($f,filesize($file)));
	fclose($f);
	$sql = "insert into gallery (data) values('$img')";
	mysql_query($sql) or die('error: '.mysql_error());
}
 
// get image
function getImage($id) {
	$sql = "select * from gallery where id = ".$id;
	$r = mysql_query($sql) or die('error: '.mysql_error());
	$i = mysql_fetch_array($r);
	$bytes = $i['data'];
 
	// pokaz obrazek	
	header( "Content-type: image/jpeg"); 		
	echo $bytes;
}

Tabela gallery:

CREATE TABLE IF NOT EXISTS `gallery` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `data` BLOB NOT NULL,
  PRIMARY KEY  (`id`)
)

Leave a Reply